#50 x86_64 Karaf 4.4.6 + Kafka Client(servicemix) 도커 이미지 생성하기
star
Tasks
Dockerfile#
FROM kkozzi-amd64-ubuntu2410-jdk17:2025.0106
# 4.4.6
ARG KARAF_VERSION
# https://dlcdn.apache.org/karaf/4.4.6/apache-karaf-4.4.6.tar.gz
ARG KARAF_DOWNLOAD_URL
# apache-karaf-4.4.6.tar.gz
ARG KARAF_DOWNLOAD_FILENAME
#apache-karaf-4.4.6
ARG KARAF_EXTRACT_DIR
# os user: kkozzi
ARG KKOZZI_PASSWORD
# karaf user: karaf
ARG KARAF_PASSWORD
# nexus
ARG NEXUS_HOST_USERID
ARG NEXUS_HOST_PASSWORD
ARG NEXUS_HOST_IPADDRESS
# 8083
ARG NEXUS_HOST_PORT
ARG NEXUS_USERID
ARG NEXUS_PASSWORD
########################
### root 사용자 환경 ###
########################
USER root
# kkozzi 사용자 비밀번호 변경
RUN echo "kkozzi:$KKOZZI_PASSWORD" | chpasswd
##################
### ffmpeg 설치 ###
##################
RUN apt-get update && \
apt-get install -y ffmpeg && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
########################
### kkozzi 사용자 환경 ###
########################
USER kkozzi
ENV KARAF_VERSION="Ubuntu 24.10, OpenJDK 17, Karaf $KARAF_VERSION"
# make directory /App/karaf
RUN mkdir -p /App/karaf
RUN chmod 755 /App/karaf
# Install KARAF $KARAF_VERSION
RUN wget $KARAF_DOWNLOAD_URL -O /App/down/$KARAF_DOWNLOAD_FILENAME
# RUN cd /App/down
WORKDIR /App/down
RUN tar zxvf $KARAF_DOWNLOAD_FILENAME
RUN cp -Rv /App/down/$KARAF_EXTRACT_DIR/* /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
RUN ssh-keygen -A
RUN mkdir -p /home/kkozzi/.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:8080/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:8080/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/kkozzi/.m2/settings.xml
USER kkozzi
RUN mkdir -p /home/kkozzi/.ssh
RUN echo "Host * \n\
Protocol 2\n\
ServerAliveInterval 60\n\
" >> /home/kkozzi/.ssh/conf
RUN echo $NEXUS_HOST_PASSWORD >> /home/kkozzi/.ssh/pass_nexus.txt
RUN echo "#!/bin/bash \n\
ps -eaf | grep L:8080 | grep localhost:$NEXUS_HOST_PORT \n\
# if not found - equals to 1, start it \n\
if [ \$? -eq 1 ] \n\
then \n\
sshpass -f /home/kkozzi/.ssh/pass_nexus.txt ssh -o StrictHostKeyChecking=no -f -N -T -M $NEXUS_HOST_USERID@$NEXUS_HOST_IPADDRESS -L:8080:localhost:$NEXUS_HOST_PORT \n\
echo \"Reconnect to Nexus.\" \n\
else \n\
echo \"Already connect to Nexus.\" \n\
fi \n\
" >> /home/kkozzi/conn_nexus.sh
RUN chmod 755 /home/kkozzi/conn_nexus.sh
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/kkozzi/.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=https://repo1.maven.org/maven2@id=central,https://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases,https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases,http://$NEXUS_USERID:$NEXUS_PASSWORD@localhost:8080/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
# Install features
RUN sshpass -f /home/kkozzi/.ssh/pass_nexus.txt ssh -o StrictHostKeyChecking=no -f -N -T -M $NEXUS_HOST_USERID@$NEXUS_HOST_IPADDRESS -L:8080:localhost:$NEXUS_HOST_PORT;printf "\
\nfeature:repo-add camel 4.7.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-gson\
\nfeature:install camel-stream\
\nfeature:install camel-sql\
\nfeature:install camel-bindy\
\nfeature:install camel-kafka\
\nfeature:install guava\
\n" | /App/karaf/bin/karaf
RUN printf "\
\ninstall -s mvn:javax.ws.rs/javax.ws.rs-api/2.1\
\ninstall -s mvn:org.yaml/snakeyaml/1.33\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-core/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-annotations/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.core/jackson-databind/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.14.0\
\ninstall -s mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.14.0\
\ninstall -s mvn:com.googlecode.json-simple/json-simple/1.1.1\
\ninstall -s mvn:org.apache.commons/commons-collections4/4.4\
\ninstall -s mvn:commons-lang/commons-lang/2.6\
\ninstall -s mvn:commons-io/commons-io/2.11.0\
\ninstall -s mvn:commons-codec/commons-codec/1.15\
\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/33.3.0-jre\
\ninstall -s mvn:org.javassist/javassist/3.22.0-CR2\
\ninstall -s mvn:org.postgresql/postgresql/42.3.7\
\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/9.40\
\ninstall -s mvn:javax.xml.soap/javax.xml.soap-api/1.4.0\
\nstart-level javax.xml.soap-api 75\
\ninstall -s mvn:javax.validation/validation-api/2.0.0.Final\
\ninstall -s mvn:org.apache.commons/commons-lang3/3.12.0\
\ninstall -s mvn:io.swagger.core.v3/swagger-annotations/2.2.8\
\ninstall -s mvn:io.swagger.core.v3/swagger-models/2.2.8\
\ninstall -s mvn:io.swagger.core.v3/swagger-core/2.2.8\
\ninstall -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kafka-clients/3.8.0_1\
\ninstall -s mvn:com.github.luben/zstd-jni/1.5.6-7\
\ninstall -s mvn:org.lz4/lz4-java/1.8.0\
\ninstall -s mvn:org.xerial.snappy/snappy-java/1.1.10.7\
\n" | /App/karaf/bin/karaf
RUN printf "\
\ninstall -s wrap:mvn:com.github.vertical-blank/sql-formatter/2.0.5\
\n" | /App/karaf/bin/karaf
USER kkozzi
WORKDIR /home/kkozzi
RUN printf "#!/bin/bash\
\nsudo service ssh start\
\nsshpass -f /home/kkozzi/.ssh/pass_nexus.txt ssh -o StrictHostKeyChecking=no -f -N -T -M $NEXUS_HOST_USERID@$NEXUS_HOST_IPADDRESS -L:8080:localhost:$NEXUS_HOST_PORT\
\nkaraf run\
\n" > /home/kkozzi/startup_server.sh
RUN chmod 755 /home/kkozzi/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
#CMD ["sudo", "/usr/sbin/sshd", "-D"]
ENTRYPOINT ["/home/kkozzi/startup_server.sh"]
빌드#
docker build --no-cache \
--build-arg KKOZZI_PASSWORD=tiger \
--build-arg KARAF_VERSION=4.4.6 \
--build-arg KARAF_DOWNLOAD_URL=https://dlcdn.apache.org/karaf/4.4.6/apache-karaf-4.4.6.tar.gz \
--build-arg KARAF_DOWNLOAD_FILENAME=apache-karaf-4.4.6.tar.gz \
--build-arg KARAF_EXTRACT_DIR=apache-karaf-4.4.6 \
--build-arg KARAF_PASSWORD=tiger \
--build-arg NEXUS_USERID=scott \
--build-arg NEXUS_PASSWORD=Tiger7 \
--build-arg NEXUS_HOST_USERID=scott \
--build-arg NEXUS_HOST_IPADDRESS=nexus.newstong.com \
--build-arg NEXUS_HOST_PORT=8083 \
--build-arg NEXUS_HOST_PASSWORD=Tiger\!T \
-t kkozzi-amd64-ubuntu2410-jdk17-karaf4-kafka:2025.0106 .
Comment 0
-
Added
KKoZZi added
dockerlabel 01-06 -
KKoZZi added
ubuntulabel 01-06 -
KKoZZi added
karaflabel 01-06 -
KKoZZi added
javalabel 01-06 -
KKoZZi added
kafkalabel 01-06
Add a comment
Comment 0