docker-compose.yml 参数详解
示例文件:docker-compose.yml
version: '3.8' # Docker Compose 文件版本号
services: # 定义应用程序中的服务,每个服务对应一个容器
web: # 定义一个名为 web 的服务
image: nginx:latest # 指定该服务使用的 Docker 镜像名称
build: . # 指定 Dockerfile 的路径,Docker Compose 将自动构建该服务的 Docker 镜像
container_name: nginx # 指定该容器的名称
ports: # 指定容器和宿主机之间的端口映射关系,格式为宿主机端口:容器端口
- "8080:80" # 将宿主机的 8080 端口映射到容器的 80 端口
volumes: # 指定容器和宿主机之间的数据卷映射关系,格式为宿主机路径:容器路径
- ./nginx.conf:/etc/nginx/nginx.conf:ro # 将宿主机上的 nginx.conf 文件映射到容器的 /etc/nginx/nginx.conf 文件,并设置为只读模式
environment: # 指定容器的环境变量
- NGINX_PORT=80 # 设置一个名为 NGINX_PORT 的环境变量,值为 80
command: nginx -g 'daemon off;' # 指定容器启动后要执行的命令,即运行 nginx,并设置为后台模式
restart: always # 指定容器退出后的重启策略,可选值为 no、always、on-failure、unless-stopped
depends_on: # 指定容器之间的依赖关系,使得一个容器启动前必须先启动其依赖的容器
- db # 表示该容器依赖于名为 db 的服务
networks: # 指定容器所属的网络
- backend # 将该容器加入名为 backend 的网络中
db: # 定义一个名为 db 的服务
image: mysql:5.7 # 指定该服务使用的 Docker 镜像名称
restart: on-failure:5 # 指定容器退出后的重启策略,on-failure:5 表示在容器退出代码非零时重启容器,最多重试 5 次
environment: # 指定容器的环境变量
- MYSQL_ROOT_PASSWORD=root # 设置一个名为 MYSQL_ROOT_PASSWORD 的环境变量,值为 root
- MYSQL_DATABASE=mydb # 设置一个名为 MYSQL_DATABASE 的环境变量,值为 mydb
- MYSQL_USER=user # 设置一个名为 MYSQL_USER 的环境变量,值为 user
- MYSQL_PASSWORD=password # 设置一个名为 MYSQL_PASSWORD 的环境
build
build 还可继续设置参数,包括:
- context:指定构建上下文路径,默认为当前目录。
- dockerfile:指定 Dockerfile 文件路径,默认为 ./Dockerfile。
- args:设置构建时的构建参数,格式为一个 key-value 的映射,可以在 Dockerfile 文件中使用 ${key} 来引用该参数。
具体含义如下:
context:构建上下文路径,即指定在哪个目录下寻找 Dockerfile 文件以及构建上下文。如果该路径是相对路径,则相对于 docker-compose.yml 所在目录。构建上下文路径中的所有文件和文件夹都会被发送到 Docker 引擎以供构建使用,因此如果上下文路径中包含大量不必要的文件,则会导致构建时间过长和镜像体积过大。
dockerfile:Dockerfile 文件路径,即指定使用哪个 Dockerfile 文件进行构建。默认为 ./Dockerfile
,即当前目录下的 Dockerfile 文件。如果指定了相对路径,则相对于构建上下文路径。如果指定了绝对路径,则会忽略上下文路径。
args:构建参数,即在构建过程中传递给 Dockerfile 文件的变量。可以在 Dockerfile 文件中使用 ${key} 的方式引用该变量。例如,可以使用 args: { APP_ENV: production } 设置一个名为 APP_ENV 值为 production 的构建参数。在 Dockerfile 文件中可以使用 ${APP_ENV} 引用该参数。
除此之外,build 参数还可以包含一些其他的选项,例如:
- cache_from:从指定的镜像中使用缓存来加速构建。
- labels:为构建过程添加元数据标签。
- network:指定构建时使用的网络。
- shm_size:指定共享内存区的大小。
- target:指定使用 Dockerfile 文件中的哪个构建阶段进行构建。
作者:ABEELAN
出处:https://www.cnblogs.com/abeelan/p/17251208.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!