#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)
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS