java程序
基础镜像=centos7+python3.6+java
jenkins+swarm+stack自动化部署
环境中使用了两套仓库,因为http和https的缘故
旧仓库 http docker.old.com:30080
新仓库 https docker.new.com:6000
Dockerfile
FROM docker.old.com:30080/network/centos:7.5.1804
COPY saas-admin.jar saas-admin.jar
COPY argvtest.py /home/work/workspace/online_codeus/docs/argvtest.py
COPY format_code.py /home/work/workspace/online_codeus/docs/format_code.py
COPY .terminalfx /root/.terminalfx
COPY magic_box.py /usr/local/python3/lib/python3.6/magic_box.py
COPY wecode.py /usr/local/python3/lib/python3.6/wecode.py
COPY codeus.py /usr/local/python3/lib/python3.6/codeus.py
ADD pinpoint.tar.gz /
ENV LANG=en_US.UTF-8
ENV JAVA_HOME=/usr/local/jdk
ENV PATH=$JAVA_HOME/bin:$PATH
ENV export JAVA_HOME M2_HOME
ENV PYTHON_HOME=/usr/local/python3
ENV export PYTHON_HOME
ENV export CLASSPATH=.
ENV PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PYTHON_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
ENV PTY_LIB_FOLDER=/root/.terminalfx/libpty
ENV export PTY_LIB_FOLDER
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#CMD exec java -jar cloudcompiler-1.0-SNAPSHOT.jar --spring.profiles.active=$CONFIG_FILE
CMD exec java -jar saas-admin.jar --server.port=20240 --spring.profiles.active=qc >> /root/logs/saas-admin.log
docker compose基础文件
version: '3'
services:
saas-admin-demo:
image: docker_image
ports:
- 30330:20240
networks:
- saas-demo
volumes:
- /data/docker_filebeat/logs/:/root/logs/
deploy:
mode: global
placement:
constraints:
- node.labels.role==saas-qc
resources:
limits:
cpus: '0.50'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
update_config:
parallelism: 1
delay: 10s
networks:
saas-demo:
driver: overlay
jenkins shell
#!/bin/bash
Image_url=docker.new.com:6000/saas_qc/
Image_name=saas_admin
Image_build=/data/docker_build/saas_admin
#jar包复制到dockerfile文件所在目录
cp -r /data/app/saas-docker/saas-admin.jar $Image_build
#进入到dockerfile文件所在目录
cd $Image_build
#构建镜像
docker build -t $Image_url$Image_name:V$BUILD_NUMBER .
#push镜像
docker push $Image_url$Image_name:V$BUILD_NUMBER
#复制compose文件模板
cp docker-compose.yml $Image_name-compose.yml
#修改compose文件模板中镜像为新构建的镜像名
sed -i s#docker_image#$Image_url$Image_name:V$BUILD_NUMBER# $Image_name-compose.yml
#执行compse文件启动容器
docker stack deploy $Image_name --compose-file=$Image_name-compose.yml
#备份目录是否存在
if [ ! -d "compose_file_bak" ]; then
mkdir compose_file_bak
fi
#移动新compose文件到备份目录
mv $Image_name-compose.yml compose_file_bak/$Image_name-compose-V$BUILD_NUMBER.yml
#查看结果
docker stack ps $Image_name