#21 RedHat 8 OpenJDK 11 Docker Image 기반 Karaf Docker Image 만들기
star
Tasks
Karaf 4.4.3 Docker Image 만들기#
docker build --no-cache \
--build-arg KARAF_PASSWORD=test1234 \
--build-arg NEXUS_USERID=admin \
--build-arg NEXUS_PASSWORD=admin1234 \
--build-arg NEXUS_HOST_USERID=hostuser \
--build-arg NEXUS_HOST_IPADDRESS=host.docker.internal \
--build-arg NEXUS_HOST_PORT=8083 \
--build-arg NEXUS_SSH_PASSWORD=testTest1234** \
-t ssemiya-redhat8-jdk11-karaf4:2023.0119 .
- Dockerfile
FROM ssemiya-redhat8-jdk11:2023.0119
ARG KARAF_PASSWORD
ARG NEXUS_USERID
ARG NEXUS_PASSWORD
ARG NEXUS_HOST_USERID
ARG NEXUS_HOST_IPADDRESS
ARG NEXUS_HOST_PORT
USER root
RUN yum install -y wget
RUN yum install -y openssh-clients
# make directory /App, /Data, /Log
RUN mkdir -p /App/karaf
RUN chmod 755 /App/karaf
RUN chown karaf:karaf /App/karaf
USER karaf
# ARM
# ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el8_7.aarch64
# Intel
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el8_7.x86_64
ENV KARAF_VERSION="RedHat 8 OpenJDK 11 Karaf 4.4.3"
# Install KARAF 4.4.3
RUN wget https://dlcdn.apache.org/karaf/4.4.3/apache-karaf-4.4.3.tar.gz -O /App/down/apache-karaf-4.4.3.tar.gz
# RUN cd /App/down
WORKDIR /App/down
RUN tar zxvf apache-karaf-4.4.3.tar.gz
RUN cp -Rv /App/down/apache-karaf-4.4.3/* /App/karaf
RUN chmod +x /App/karaf/bin/start
RUN rm -rf /App/down/*
RUN echo "karaf = $KARAF_PASSWORD,_g_:admingroup" >> /App/karaf/etc/users.properties
RUN echo "_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh" >> /App/karaf/etc/users.properties
# Install features
RUN printf "\
\nfeature:repo-add camel 3.1.0\
\nfeature:install aries-blueprint\
\nfeature:install jdbc\
\nfeature:install jndi\
\nfeature:install scr\
\nfeature:install http\
\nfeature:install pax-web-jetty-http2\
\nfeature:install http-whiteboard\
\nfeature:install jackson-jaxrs\
\nfeature:install transaction-api\
\nfeature:install transaction\
\nfeature:install jpa\
\nfeature:install subsystems\
\nfeature:install war\
\nfeature:install pax-jdbc-pool-dbcp2\
\nfeature:install pax-jdbc-pool-aries\
\nfeature:install pax-jdbc-oracle\
\nfeature:install pax-cdi\
\nfeature:install hibernate\
\nfeature:install hibernate-envers\
\nfeature:install jasypt-encryption\
\nfeature:install webconsole\
\nfeature:install jolokia\
\nfeature:install blueprint-web\
\nfeature:install camel\
\nfeature:install camel-http\
\nfeature:install camel-netty\
\nfeature:install camel-servlet\
\nfeature:install camel-jackson\
\nfeature:install camel-jacksonxml\
\nfeature:install camel-swagger-java\
\nfeature:install camel-gson\
\nfeature:install camel-stream\
\nfeature:install camel-sql\
\nfeature:install camel-bindy\
\n" | /App/karaf/bin/karaf
RUN ssh-keygen -A
RUN mkdir -p /home/karaf/.ssh
RUN printf "Host * \
\nProtocol 2\
\nServerAliveInterval 60\
\n" > /home/karaf/.ssh/conf
RUN echo $NEXUS_SSH_PASSWORD >> /home/karaf/.ssh/nexuspass.txt
RUN mkdir -p /home/karaf/.m2
RUN printf "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
\n<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"\
\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\
\n xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\">\
\n <pluginGroups>\
\n </pluginGroups>\
\n <proxies>\
\n </proxies>\
\n <servers>\
\n <server>\
\n <id>nexus</id>\
\n <username>$NEXUS_USERID</username>\
\n <password>$NEXUS_PASSWORD</password>\
\n </server>\
\n <server>\
\n <id>central</id>\
\n <username>$NEXUS_USERID</username>\
\n <password>$NEXUS_PASSWORD</password>\
\n </server>\
\n </servers>\
\n <mirrors>\
\n <mirror>\
\n <id>central</id>\
\n <mirrorOf>*</mirrorOf>\
\n <name>central</name>\
\n <url>http://localhost:18083/repository/maven-public/</url>\
\n </mirror>\
\n </mirrors>\
\n <profiles>\
\n <profile>\
\n <id>nexus</id>\
\n <activation>\
\n <jdk>1.8</jdk>\
\n </activation>\
\n <repositories>\
\n <repository>\
\n <id>nexuss</id>\
\n <name>Local repository</name>\
\n <url>http://localhost:18083/repository/maven-public/</url>\
\n <layout>default</layout>\
\n <releases>\
\n <enabled>true</enabled>\
\n <updatePolicy>always</updatePolicy>\
\n </releases>\
\n <snapshots>\
\n <enabled>true</enabled>\
\n <updatePolicy>daily</updatePolicy>\
\n </snapshots>\
\n </repository>\
\n </repositories>\
\n </profile>\
\n </profiles>\
\n</settings>\
\n" > /home/karaf/.m2/settings.xml
USER karaf
RUN mv /App/karaf/etc/org.ops4j.pax.url.mvn.cfg /App/karaf/etc/org.ops4j.pax.url.mvn.cfg.old
RUN printf "\
\norg.ops4j.pax.url.mvn.certificateCheck=true\
\norg.ops4j.pax.url.mvn.settings=/home/karaf/.m2/settings.xml\
\norg.ops4j.pax.url.mvn.useFallbackRepositories=false\
\n\
\norg.ops4j.pax.url.mvn.defaultRepositories=\${karaf.home.uri}\${karaf.default.repository}@id=system.repository@snapshots,\${karaf.data.uri}kar@id=kar.repository@multi@snapshots,\${karaf.base.uri}\${karaf.default.repository}@id=child.system.repository@snapshots\
\norg.ops4j.pax.url.mvn.repositories=http://$NEXUS_USERID:$NEXUS_PASSWORD@localhost:18083/repository/maven-public@id=nexus\
\n\
\norg.ops4j.pax.url.mvn.globalUpdatePolicy = always\
\n\
\norg.ops4j.pax.url.mvn.timeout = 5000\
\norg.ops4j.pax.url.mvn.socket.connectionTimeout = 5000\
\norg.ops4j.pax.url.mvn.socket.readTimeout = 30000\
\norg.ops4j.pax.url.mvn.socket.keepAlive = false\
\norg.ops4j.pax.url.mvn.socket.linger = -1\
\norg.ops4j.pax.url.mvn.socket.reuseAddress = false\
\norg.ops4j.pax.url.mvn.socket.tcpNoDelay = true\
\norg.ops4j.pax.url.mvn.connection.bufferSize = 8192\
\norg.ops4j.pax.url.mvn.connection.retryCount = 3\
\n" > /App/karaf/etc/org.ops4j.pax.url.mvn.cfg
RUN sshpass -f /home/karaf/.ssh/nexuspass.txt ssh -o StrictHostKeyChecking=no -f -N -T -M $NEXUS_HOST_USERID@$NEXUS_HOST_IPADDRESS -L:18083:localhost:$NEXUS_HOST_PORT;printf "\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-core/2.10.2\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-annotations/2.10.2\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-databind/2.10.2\
\ninstall -s mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.10.2\
\ninstall -s mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.10.2\
\ninstall -s mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.10.2\
\ninstall -s mvn:com.googlecode.json-simple/json-simple/1.1.1\
\ninstall -s mvn:commons-collections/commons-collections/3.2.2\
\ninstall -s mvn:commons-lang/commons-lang/2.6\
\ninstall -s mvn:commons-io/commons-io/1.4\
\ninstall -s mvn:commons-codec/commons-codec/1.9\
\ninstall -s wrap:mvn:com.github.stephenc.jcip/jcip-annotations/1.0-1\
\ninstall -s wrap:mvn:org.eclipse.ecf/org.objectweb.asm/5.0.1.v201404251740\
\ninstall -s wrap:mvn:xalan/xalan/2.7.2\
\ninstall -s wrap:mvn:io.jsonwebtoken/jjwt-api/0.10.5\
\ninstall -s wrap:mvn:io.jsonwebtoken/jjwt-impl/0.10.5\
\ninstall -s wrap:mvn:io.jsonwebtoken/jjwt-jackson/0.10.5\
\ninstall -s wrap:mvn:com.auth0/java-jwt/3.18.2\
\ninstall -s wrap:mvn:com.google.code.gson/gson/2.8.0\
\ninstall -s mvn:com.google.guava/guava/21.0\
\ninstall -s mvn:org.javassist/javassist/3.22.0-CR2\
\ninstall -s wrap:mvn:org.apache.httpcomponents/httpclient/4.5.13\
\ninstall -s wrap:mvn:commons-httpclient/commons-httpclient/3.1\
\ninstall -s mvn:com.strategicgains/DateAdapterJ/1.1.5-SNAPSHOT\
\ninstall -s mvn:javax.ws.rs/javax.ws.rs-api/2.1\
\ninstall -s wrap:mvn:com.oracle.ojdbc8/ojdbc8/12.2.0.1\
\ninstall -s mvn:org.ow2.asm/asm-all/5.2\
\ninstall -s wrap:mvn:net.minidev/accessors-smart/1.2\
\ninstall -s wrap:mvn:net.minidev/json-smart/2.3\
\ninstall -s wrap:mvn:com.nimbusds/nimbus-jose-jwt/7.8\
\ninstall -s mvn:javax.xml.soap/javax.xml.soap-api/1.4.0\
\nstart-level wrap:mvn:org.apache.httpcomponents/httpclient/4.5.13 75\
\nstart-level wrap:mvn:commons-httpclient/commons-httpclient/3.1 75\
\nstart-level DateAdapterJ 75\
\nstart-level javax.xml.soap-api 75\
\n" | /App/karaf/bin/karaf
RUN printf "#!/bin/bash\
\nsudo service ssh start\
\nsshpass -f /home/karaf/.ssh/nexuspass.txt ssh -f -N -T -M $NEXUS_HOST_USERID@$NEXUS_HOST_IPADDRESS -L:18083:localhost:$NEXUS_HOST_PORT\
\nkaraf run\
\n" > /home/karaf/startup_server.sh
RUN chmod 755 /home/karaf/startup_server.sh
ENV KARAF_HOME /App/karaf
ENV KARAF_EXEC exec
ENV PATH $PATH:$KARAF_HOME/bin
EXPOSE 22 8101 1099 44444 8181 9999
ENTRYPOINT ["/home/karaf/startup_server.sh"]
컨테이너 생성#