Docker全家桶:Docker Compose项目部署
在学习完了前面的基础知识之后,我们现在可以开始部署完整的项目了。项目分成两个部分,前端和后端,并且采用前后端分离的形式。对应到docker,就是前端和后端分别对应一个容器。把这两个容器加入到同一个网段中,就能够进行数据的传输了。
但是呢,大体上比较繁琐,后端打包、前端打包、配置数据库、配置jdk环境,等等。最后手动通过docker run来把这些包放到容器中,才能运行起来。
通过DockerCompose就能够完成对于项目的一键部署。
什么是DockerCompose?DockerCompose是 Docker 官方编排(Orchestration)工具,用于定义和运行多容器 Docker 应用程序。使用 Docker Compose,你可以使用一个 YAML 文件来配置你的应用服务。然后使用一个简单的命令,就可以创建并启动所有服务。
在这个文件中:
-
mysql 服务:
image: 使用 mysql 镜像。
container_name: 容器命名为 mysql。
ports: 将容器的 3306 端口映射到宿主机的 3306 端口。
environment: 设置环境变量,包括时区 TZ 和 MySQL 的根用户密码 MYSQL_ROOT_PASSWORD。
volumes: 挂载卷,包括配置文件、数据目录和初始化脚本目录。
networks: 指定该服务连接到 demo-net 网络。 -
demo 服务:
build: 指定构建上下文和 Dockerfile。
container_name: 容器命名为 hmall。
ports: 将容器的 8080 端口映射到宿主机的 8080 端口。
depends_on: 指定该服务依赖于 mysql 服务,意味着 mysql 服务会先启动。
networks: 指定该服务连接到 demo-net 网络。 -
nginx 服务:
image: 使用 nginx 镜像。
container_name: 容器命名为 nginx。
ports: 将容器的 18080 和 18081 端口映射到宿主机的相应端口。
volumes: 挂载卷,包括配置文件和静态资源目录。
depends_on: 指定该服务依赖于 demo 服务。
networks: 指定该服务连接到 demo-net 网络。 -
网络:定义了一个自定义网络 demo-net,服务 mysql、demo 和 nginx 都连接到这个网络。
-
卷:定义了多个挂载卷,用于持久化数据和共享配置文件。
当配置好了一个DockerCompose文件后,通过简单的一行命令就可以启动这些服务,让他们自动加入网段,自动建立起联系。
Docker Compose的作用远不止如此,还能够完成集群的部署等等~