質問:迷惑メールの作成時に初めてドッキング画像を作成して実行する方法はありますか?Dockerは最初の迷惑メール対策でのみ構築して実行します
問題:vagrant provision
を実行すると、docker: Error response from daemon: Conflict. The container name "/jenkins" is already in use by container <snip>
というエラーが表示されます。
追加情報:私はを実行しました。私はプラグインをインストールしたので、自動的にインストールするplugins.txtファイルに追加しました。
このようにして、迷惑メールマシンの構築をできるだけ速くし、ドッカーのイメージをできるだけ小さくするために、ビルドスクリプトを作成しました(まだここで動作する必要があります)。また、私はJenkinsセットアップGUIを削除したいので、デフォルトの管理者アカウントを作成しました。
Vagrantfile:
Vagrant.require_version ">= 1.5"
Vagrant.configure("2") do |config|
config.vbguest.auto_update = false
config.vm.provider :virtualbox do |v|
v.customize [
"modifyvm", :id,
"--memory", 1024,
"--natdnshostresolver1", "on",
"--cpus", 2,
]
end
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "dev-jenkins-site"
# Forward jenkins port.
config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.network :private_network, ip: "192.168.34.56"
jenkins_dir = "/var/jenkins_home"
# Run Dockerfile.
config.vm.provision "docker"
# Restart jenkins container, in case it was stopped (which is possible from a 'vagrant halt').
# This won't run if this after the docker build & run provision (below) when using 'vagrant provision' because it
# returns an error and exits before this can run.
config.vm.provision "shell",
inline: "docker restart jenkins",
run: "always"
# Only need to build the image and container one time.
# Using '--restart always' doesn't work when the container is stopped from 'vagrant halt'.
config.vm.provision "shell",
inline: "cd /vagrant && make jenkins && docker run -d --name jenkins -p 80:8080 -p 50000:50000 -v #{jenkins_dir}:#{jenkins_dir} draven/jenkins",
run: "once"
# Files on your local machine
config.vm.synced_folder "./jenkins_home", jenkins_dir
config.vm.synced_folder ".", "/vagrant"
end
Dockerfile:
FROM jenkins/jenkins:latest
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
ENV JENKINS_USER admin
ENV JENKINS_PASS admin
# Skip initial setup
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
COPY default-user.groovy /usr/share/jenkins/ref/init.groovy.d/
VOLUME /var/jenkins_home
のMakefile:常に
SHELL:=/bin/bash
jenkins:
cd docker-image && docker build -t draven/jenkins .
私の 'jenkins_home /'フォルダは削除されませんので、これは私のために働く必要があります。 'docker ps -a -f" name = jenkins "は必要ですか?もしそうなら、なぜですか?コンソールに内容を表示することはできませんか? – Draven
-aは実行中のコンテナだけでなく、-fはドッカーで直接フィルタリングすることですが、 '|グレープジェンキンス '。出力が必要ない場合は、stdout(およびstderr)を/ dev/nullにリダイレクトすることができます(この[answer](https://stackoverflow.com/a/876267/3775614)を参照)。 –
申し訳ありませんが、私の質問は不明だと思います。 'docker ps -a -f" name = jenkins "' 'docker rm jenkins'でコンテナを止めるのに必要なのですか? 'docker rm jenkins'を' docker ps'の出力に依存しないので、私はそれだけですべて使うことができます。 – Draven