Docker Swarm java 服務集羣java
環境1:linux
環境2:redis
目錄結構spring
├── java
│ ├── apiclient_cert.p12(可忽略)
│ ├── Dockerfile
│ ├── jdk-8u181-linux-x64.tar.gz
│ ├── rongyunKEY.txt(可忽略)
│ ├── start.sh(可忽略)
│ ├── TimeStatistics.txt(可忽略)
│ ├── zhibof330e2e4367.p12(可忽略)
│ └── zkhz_springboot-0.0.1-SNAPSHOT.jar(java服務程序)
├── service_java.ymldocker
下載centos
一、建立dockerfileapi
FROM centos:6 MAINTAINER xiangsikai ENV LANG en_US.UTF-8 ENV TZ=Asia/Shanghai RUN yum -y install sudo ADD jdk-8u181-linux-x64.tar.gz /usr/local/ ENV JAVA_HOME /usr/local/jdk1.8.0_181 ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin RUN sudo mkdir -p /usr/local/java_zkhz/ && \ sudo mkdir -p /usr/java_zkhz/Certificate && \ sudo mkdir -p /var/log/java/ COPY apiclient_cert.p12 zhibof330e2e4367.p12 /usr/java_zkhz/Certificate/ COPY rongyunKEY.txt TimeStatistics.txt start.sh /usr/local/java_zkhz/ COPY zkhz_springboot-0.0.1-SNAPSHOT.jar /usr/local/java_zkhz/ RUN sudo chmod 755 /usr/java_zkhz/Certificate/apiclient_cert.p12 \ /usr/java_zkhz/Certificate/zhibof330e2e4367.p12 \ /usr/local/java_zkhz/start.sh CMD ["java","-jar","/usr/local/java_zkhz/zkhz_springboot-0.0.1-SNAPSHOT.jar"] EXPOSE 8080
# 指定系統鏡像版本 FROM centos:6 # 指定管理員名稱 MAINTAINER xiangsikai # 添加變量,指定中文編碼 ENV LANG en_US.UTF-8 # 添加變量,同步系統時間 ENV TZ=Asia/Shanghai # 添加命令 RUN yum -y install sudo # 添加文件 ADD jdk-8u181-linux-x64.tar.gz /usr/local/ # 添加變量,指定jdk ENV JAVA_HOME /usr/local/jdk1.8.0_181 # 添加變量,指定jdk ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 添加變量,指定jdk ENV PATH $PATH:$JAVA_HOME/bin # 添加命令 RUN sudo mkdir -p /usr/local/java_zkhz/ && \ sudo mkdir -p /usr/java_zkhz/Certificate && \ sudo mkdir -p /var/log/java/ # 添加文件 COPY apiclient_cert.p12 zhibof330e2e4367.p12 /usr/java_zkhz/Certificate/ # 添加文件 COPY rongyunKEY.txt TimeStatistics.txt start.sh /usr/local/java_zkhz/ # 添加文件 COPY zkhz_springboot-0.0.1-SNAPSHOT.jar /usr/local/java_zkhz/ # 添加命令 RUN sudo chmod 755 /usr/java_zkhz/Certificate/apiclient_cert.p12 \ /usr/java_zkhz/Certificate/zhibof330e2e4367.p12 \ /usr/local/java_zkhz/start.sh # 啓動命令 CMD ["java","-jar","/usr/local/java_zkhz/zkhz_springboot-0.0.1-SNAPSHOT.jar"] # 開放端口 EXPOSE 8080
二、建立鏡像(redis目錄下)springboot
docker build -t 192.168.1.81:5000/java:v1 .
三、上傳鏡像網絡
docker push 192.168.1.81:5000/java:v1
四、建立 service_java.ymltcp
version: '3.7' services: java: image: 192.168.1.81:5000/java:v1 ports: - 8888:8080 networks: - networkce deploy: mode: replicated replicas: 2 update_config: parallelism: 1 delay: 60s failure_action: rollback order: start-first rollback_config: parallelism: 1 delay: 60s failure_action: rollback order: start-first volumes: - type: volume source: nfs-java_log target: /var/log/java volume: nocopy: true #depends_on: # - redis networks: networkce: driver: overlay volumes: nfs-java_log: driver: local driver_opts: type: "nfs" o: "addr=192.168.1.81,soft,timeo=180,bg,tcp,rw" device: "192.168.1.81:/docker/service/zs/java/log"
# 指定版本 version: '3.7' # 服務 services: # 指定服務名 java: # 指定使用鏡像 image: 192.168.1.81:5000/java:v1 # 指定開放端口 ports: - 8888:8080 # 指定網絡 networks: - networkce # 管理容器 deploy: # 設置副本模式 mode: replicated # 副本數 replicas: 2 # 更新配置 update_config: # 每次更新數量 parallelism: 1 # 每次更新時間 delay: 60s # 更新失敗設置,rollback回滾 failure_action: rollback # 更新狀態,start-firest 更新同時疊加舊版本,以後刪除 order: start-first # 回滾配置 rollback_config: # 每次回滾數量 parallelism: 1 # 每次回滾時間 delay: 60s # 回滾失敗設置,rollback回滾 failure_action: rollback # 回滾狀態,start-firest 回滾同時疊加舊版本,以後刪除 order: start-first # 配置持久化數據 volumes: # 數據類型 - type: volume # 設置名稱 source: nfs-java_log # 掛載容器路徑 target: /var/log/java # 默認 volume: nocopy: true #depends_on: # - redis # 網絡 networks: # 添加網絡名稱 networkce: driver: overlay # 數據持久化 volumes: # 數據名稱 nfs-java_log: driver: local driver_opts: # 類型 type: "nfs" # 官方默認配置 o: "addr=192.168.1.81,soft,timeo=180,bg,tcp,rw" device: "192.168.1.81:/docker/service/zs/java/log"
五、建立服務
docker stack deploy -c service_java.yml java