Docker Compose写法
Docker Compose 是一种用于定义和运行多容器 Docker 应用程序的工具。它使用 docker-compose.yml
文件来描述容器的配置。在 docker-compose.yml
文件中,主要包含以下元素:
1. version
指定 Compose 文件的版本,常用的版本是 "3"
。版本不同可能影响一些指令的使用。
version: '3'
2. services
定义服务的关键部分。每个服务表示一个容器,服务的配置项包括镜像、环境变量、端口映射等。各个服务可以相互通信。
web:
image: nginx:latest
ports:
- "80:80"
environment:
- NGINX_HOST=localhost
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
以上示例中定义了两个服务:
web
: 使用 Nginx 镜像并将主机的 80 端口映射到容器的 80 端口。db
: 使用 MySQL 5.7 镜像,并设置根密码。
3. volumes
用于将主机目录或文件挂载到容器中,或者创建 Docker 管理的持久存储。
web:
volumes:
- ./web_data:/var/www/html
这个示例将主机的 ./web_data
目录挂载到容器的 /var/www/html
目录。
4. networks
定义网络使服务之间可以进行通信。Compose 可以自动创建默认网络,但你也可以手动定义。
web:
networks:
- frontend
db:
networks:
- backend
networks:
frontend:
backend:
这个示例定义了两个网络 frontend
和 backend
,web
服务连接到 frontend
网络,而 db
服务连接到 backend
网络。
5. ports
指定端口映射,用于将主机端口映射到容器端口。
web:
ports:
- "8080:80"
这个示例将主机的 8080
端口映射到容器的 80
端口。
6. environment
设置环境变量,通常用于服务的配置。
services:
db:
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
7. depends_on
指定服务的依赖关系,确保某个服务在另一个服务之前启动。
services:
web:
depends_on:
- db
在这个示例中,web
服务依赖于 db
服务,db
会先启动。
8. build
如果需要从 Dockerfile 构建镜像,可以使用 build
指定 Dockerfile 的路径。
services:
app:
build: .
这个示例从当前目录中的 Dockerfile 构建镜像。
9. restart
设置服务的重启策略,确保服务在失败后自动重启。
services:
web:
restart: always
可选值包括:no
、always
、on-failure
、unless-stopped
。
10. command
指定服务启动时要执行的命令。
services:
app:
command: ["python", "app.py"]
示例完整 docker-compose.yml
文件
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./web_data:/usr/share/nginx/html
networks:
- frontend
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
networks:
- backend
volumes:
db_data:
networks:
frontend:
backend:
这个 Compose 文件定义了一个 Nginx 和一个 MySQL 服务,它们分别连接到不同的网络,并设置了持久化卷和端口映射。
版权声明:
作者:Gweek
链接:https://bbs.geek.nyc.mn/archives/50
来源:Gweek postHub
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论