如何编写 docker-compose.yml 文件?

· 约 3 分钟读完 · 第 39 / 115 章

推荐答案

本题详细解读

1. version: '3.8'

  • 指定了 docker-compose.yml 文件的版本。3.8 是 Docker Compose 的一个较新版本,支持大多数现代 Docker 功能。

2. services

  • services 部分定义了要运行的服务。每个服务对应一个容器。

2.1 web 服务

  • image: nginx:latest:指定了使用的镜像为 nginx:latest,即最新版本的 Nginx。
  • ports: - "80:80":将主机的 80 端口映射到容器的 80 端口,使得可以通过主机的 80 端口访问 Nginx。
  • volumes: - ./html:/usr/share/nginx/html:将主机当前目录下的 html 文件夹挂载到容器的 /usr/share/nginx/html 目录,用于存放 Nginx 的静态文件。
  • networks: - my_network:将 web 服务连接到 my_network 网络。

2.2 db 服务

  • image: mysql:5.7:指定了使用的镜像为 mysql:5.7,即 MySQL 5.7 版本。
  • environment:设置了环境变量,MYSQL_ROOT_PASSWORD 是 MySQL 的 root 用户密码,MYSQL_DATABASE 是创建的数据库名称。
  • volumes: - ./data:/var/lib/mysql:将主机当前目录下的 data 文件夹挂载到容器的 /var/lib/mysql 目录,用于持久化 MySQL 数据。
  • networks: - my_network:将 db 服务连接到 my_network 网络。

3. networks

  • my_network:定义了一个名为 my_network 的网络,使用 bridge 驱动。bridge 是 Docker 默认的网络驱动,适用于单主机环境。

4. 总结

  • 这个 docker-compose.yml 文件定义了两个服务:web 和 db,分别运行 Nginx 和 MySQL 容器。它们通过 my_network 网络进行通信,并且使用了卷来持久化数据和静态文件。