docker build

Docker イメージを生成するための手順を示します。 ここでは、jenkins の Docker イメージを作成する例を記載しております。

コンテナ内に格納したいファイルの生成 (必要に応じて実施)

以下は、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 ファイルの準備

作成したいイメージ用の 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 イメージ生成

次のコマンドを実行して 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/ \

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS