構建 Dockerfile 和 docker-compose.yml 檔案
Dockerfile
#在原基礎映象上二次構建
from jenkins
USER root
#下載最新版本的 jenkins.war,使安裝後的jenkins是最新版本的,最後新版的 jenkins.war可以在簡單執行 jenkins 容器後下載獲得 docker run -p 8080:8080 -p 50000:50000 jenkins
COPY jenkins.war /usr/share/jenkins/
#因為釋出指令碼使用到ansible同步檔案,所以用了ansible的配置
COPY ansible /etc/ansible
#最後釋出指令碼是使用python3的釋出指令碼,所以要安裝python3的環境,修改pip的下載源,其中 pip.conf內容為:
#[global]
#index-url=http://mirrors.aliyun.com/pypi/simple/
#[install]
#trusted-host=mirrors.aliyun.com
#[list]
#format=columns
COPY pip /root/.pip
COPY Python-3.6.3.tar /usr/local/src/
#安裝node環境,方便前端使用npm編譯
COPY node-v10.15.0-linux-x64.tar /usr/local/src/
#更正容器的時間為東八區時間
COPY timezone /etc/timezone
#rsync同步程式碼使用,gcc zlib* openssl* libssl-dev 編譯python3使用,cryptography安裝要指定2.4.2版本,否則會報過時警告
RUN apt-get update && apt-get install -y rsync make gcc zlib* openssl* libssl-dev vim \
&& cd /usr/local/src \
&& tar -xf Python-3.6.3.tar \
&& cd Python-3.6.3 \
&& ./configure && make && make install \
&& pip3 install cryptography==2.4.2 \
&& pip3 install paramiko \
&& pip3 install ansible==2.3.1.0
#安裝node及配置npm下載源
RUN cd /usr/local/src \
&& tar xf node-v10.15.0-linux-x64.tar \
&& cp node-v10.15.0-linux-x64 /usr/local/node-v10 -rf \
&& ln -s /usr/local/node-v10/bin/node /usr/local/bin/node \
&& ln -s /usr/local/node-v10/bin/npm /usr/local/bin/npm \
&& npm config set registry https://registry.npm.taobao.org \
&& rm -rf /usr/local/src/*
#修改ssh_config配置,這樣ssh到目標方機不用進行手工確認了
RUN sed -i "/StrictHostKeyChecking/d" /etc/ssh/ssh_config
RUN echo "StrictHostKeyChecking no" >>/etc/ssh/ssh_config
#ansible會往/var/log寫日誌,所以要給寫許可權
RUN chmod -R 777 /var/log
USER jenkins
#拷貝私鑰到 jenkins主目錄的.ssh目錄下,該金鑰的公鑰已經配置了gitlab上的倉庫倉庫,所以只要配置了該私鑰就可以拉取所有程式碼,轉jenkins使用者操作是為了使這個檔案屬主是jenkins,否則無法檢視
COPY ssh /var/jenkins_home/.ssh