DockerでJenkinsサーバを構築する際の落とし穴とインストール手順について簡単に説明します。
ポットホールを踏み抜いて
jenkinsci/blueocean Imageを使用してサーバーを構築し、公式ドキュメントに従ってNode.jsを設定しましたが、npmコマンドでは次のようなエラーが発生します。
bash: ./node: No such file or directory
などに変更します。jenkins/jenkins:ltsイメージに変更すると、すべてがうまくいきます。jenkinsci/blueocean Imageは、Node.jsの実行を妨げるいくつかの依存関係を合理化したはずです。
インストールプロセス:
# ドッカーをプルする:dind Image
docker image pull docker:dind
# jenkinsをプルする/jenkins:lts Image
docker image pull jenkins/jenkins:lts
# jenkinsネットワークを作成する
docker network create jenkins
# データを永続化するためにjenkins-docker-certsボリュームを作成する。
docker volume create jenkins-docker-certs
# データを永続化するためにjenkins-dataボリュームを作成する。
docker volume create jenkins-data
# jenkins-dockerコンテナを起動し、JenkinsサーバーでDockerコマンドを実行する。
docker container run --name jenkins-docker --rm --detach \
--privileged --network jenkins --network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish docker:dind
# jenkinsコンテナを有効にし、サーバーのタイムゾーンをアジアに変更する。/Tokyo
docker container run --name jenkins --rm --detach \
--network jenkins --env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
--env JAVA_OPTS=-Duser.timezone=Asia/Tokyo \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
--publish --publish 000 jenkins/jenkins:lts