#author("2020-06-12T03:50:53+09:00","","") #author("2020-06-12T03:52:46+09:00","","") #navi2(Raspberry Pi/Ubuntu Server/Docker,toc,prev,next) ---- #contents ---- *docker build [#t94d7b3a] Docker イメージを生成するための手順を示します。 ここでは、jenkins の Docker イメージを作成する例を記載しております。 ** コンテナ内に格納したいファイルの生成 (必要に応じて実施) [#gf91eeb4] 以下は、jenkins の設定ファイルと実行スクリプトを用意する例となります。 mkdir -p rootfs/etc rootfs/usr/local/bin rootfs/etc/jenkins.conf ファイルの内容 # # Jenkins Config File # NAME=jenkins # Java Option JAVA_ARGS="-Djava.awt.headless=true" if [ "${PROXY_HOST}" != "" ]; then JAVA_ARGS="$JAVA_ARGS -Dhttp.proxyHost=${PROXY_HOST} -Dhttp.proxyPort=${PROXY_PORT}" JAVA_ARGS="$JAVA_ARGS -Dhttps.proxyHost=${PROXY_HOST} -Dhttps.proxyPort=${PROXY_PORT}" fi JENKINS_USER=$NAME JENKINS_GROUP=$NAME JENKINS_WAR=/usr/share/webapps/$NAME/$NAME.war JENKINS_HOME=/var/lib/jenkins JENKINS_ENABLE_ACCESS_LOG="yes" HTTP_PORT=8080 PREFIX=/$NAME JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --prefix=$PREFIX" rootfs/usr/local/bin/jenkins ファイルの内容 #!/bin/ash # # Jenkins Server Script # PATH=/bin:/usr/bin:/sbin:/usr/sbin NAME=jenkins [ -r /etc/$NAME.conf ] && . /etc/$NAME.conf if [ "$JENKINS_ENABLE_ACCESS_LOG" = "yes" ]; then JENKINS_ARGS="$JENKINS_ARGS --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/$NAME/access_log" fi SU=/bin/su JAVA=`type -p java` $SU -l $JENKINS_USER -s /bin/ash -c "$JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS" ** Docker ファイルの準備 [#x1606a0c] 作成したいイメージ用の Dockerfile を作成します。 以下は、jenkins 用の Dockerfile の例となります。 FROM alpine:latest ARG JENKINS_UID=2000 ARG JENKINS_GID=2000 USER root EXPOSE 8080 50000 # rootfs 配下のファイルを全てコンテナ内に格納する。 ADD rootfs/ / RUN apk --update --no-cache add jenkins shadow RUN usermod -u ${JENKINS_UID} jenkins && groupmod -g ${JENKINS_GID} jenkins RUN chmod 755 /usr/local/bin/* RUN chown jenkins:jenkins /var/lib/jenkins /var/log/jenkins RUN mkdir -p /var/cache/jenkins/war && chmod 755 /var/cache/jenkins && chown -R jenkins:jenkins /var/cache/jenkins ENTRYPOINT ["/usr/local/bin/jenkins"] ** Docker イメージ生成 [#s828f1cd] 次のコマンドを実行して docker イメージを生成します。 JENKINS_HOME=/var/lib/jenkins JENKINS_EXPORT=/var/lib/jenkins sudo useradd -u 2000 jenkins --home-dir=$JENKINS_OME sudo mkdir -p $JENKINS_EXPORT sudo chown jenkins:jenkins $JENKINS_EXPORT JENKINS_UID=`id -u jenkins` JENKINS_GID=`id -g jenkins` docker build --no-cache \ --build-arg JENKINS_UID=$JENKINS_UID \ --build-arg JENKINS_GID=$JENKINS_GID \ -t alpine-jenkins . # プロキシが必要な場合は、docker build の引数に以下を追加してください。 --build-arg http_proxy=http://[proxy_host][:proxy_port]/ \ --build-arg https\_proxy=http://[proxy_host][:proxy_port/ \ *** docker build の fetch に失敗する場合 [#q4cf36d0] 次のコマンドで docker のサービスを再起動してください。 sudo service docker restart ---- #navi2(Raspberry Pi/Ubuntu Server/Docker,toc,prev,next)