实战:Docker容器虚拟化技术 (使用DockerFile构建镜像并搭建 swarm+compose集群)5
要求:
-
使用DockerFile构建镜像并搭建 swarm+compose集群
-
在Swarm 集群中(至少两个节点)使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务 包括: Mysql、Redis以及应用程序MyProject.jar
实现流程分析
- 创建springboot程序MyProject,打成jar包:MyProject.jar
- 使用dockerfile 将MyProject.jar构建成镜像dabing/MyProject:1.0
- 搭建Swarm 集群
- 在Swarm 集群中使用 compose 文件 (docker-compose-myproject.yml) 来配置、启动多个服务
包括: Mysql、Redis以及应用程序MyProject
一、创建springboot程序并打成jar包:MyProject.jar
二、使用dockerfile 将MyProject.jar构建成镜像dabing/MyProject:1.0
-
将MyProject.jar拷贝到管理节点和工作节点上
-
管理节点和工作节点上 编写dockerfile-myproject文件
# This Dockerfile uses the centos image FROM centos:7.6.1810 # 指定容器内部使用语言 ENV LANG="en_US.UTF-8" ENV LC_ALL="en_US.UTF-8" # 指定JDK环境 ENV JAVA_HOME="/apps/jdk" ENV PATH=${JAVA_HOME}/bin:$PATH # 使用亚洲/上海时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 创建工作目录 RUN mkdir -p /apps /data/apps # 安装JDK ADD ./jdk-8u251-linux-x64.tar.gz /apps/ RUN ln -s /apps/jdk1.8.0_251 /apps/jdk ADD ./UnlimitedJCEPolicyJDK8/US_export_policy.jar /apps/jdk/jre/lib/security/ ADD ./UnlimitedJCEPolicyJDK8/local_policy.jar /apps/jdk/jre/lib/security/ # 拷贝Hot.jar并运行 COPY MyProject.jar MyProject.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","MyProject.jar"]
-
在管理节点和工作节点上 使用dockerfile 将MyProject.jar构建成镜像dabing/MyProject:1.0
-
查看生成的镜像
三、搭建Swarm 集群
具体参考swarm集群搭建:Docker容器虚拟化技术—Docker运维管理(Swarm集群管理)3
四、在Swarm 集群中使用 compose 文件 (docker-compose-myproject.yml) 来配置、启动多个服务 包括: Mysql、Redis以及应用程序MyProject
-
在manager节点使用 compose 文件 (docker-compose-myproject.yml) 来配置 (包括: Mysql、Redis以及应用程序MyProject)
version: "3.0" services: mysql: image: mysql:5.7.30 ports: - 3306:3306 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --default-time-zone=+8:00 environment: MYSQL_ROOT_PASSWORD: "root" volumes: - "/docker/mysql/db:/var/lib/mysql" deploy: mode: replicated replicas: 2 redis: image: redis:5.0.9 environment: - TZ=Asia/beijing ports: - 6379:6379 volumes: - /docker/redis/data:/data deploy: mode: replicated replicas: 2 myproject: image: dabing/myproject:1.0 ports: - 8888:8888 environment: TZ: Asia/Shanghai deploy: mode: replicated replicas: 2
-
构建服务
-
启动服务
-
查看服务
-
验证