Loading

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 文件中的哪个构建阶段进行构建。
posted @ 2023-03-24 12:57  ABEELAN  阅读(948)  评论(0编辑  收藏  举报