Docker与Docker Compose入门:释放你应用部署的威力( 三 )

当编写 Docker Compose 文件时,以下是更详细的语法和配置选项解释:

  • 版本(version):Docker Compose 文件的版本 , 用于指定使用哪个版本的语法 。常见的版本号有 '1'、'2'、'2.1'、'3' 等 。不同的版本支持不同的功能和语法 。
  • 服务(services):这是 Docker Compose 文件的核心部分,用于定义各个服务的配置 。每个服务都是一个独立的容器 。
    • context:构建上下文路径,表示构建时 Docker 将查找 Dockerfile 文件的位置 。
    • dockerfile:指定使用的 Dockerfile 文件名 。默认为 Dockerfile
    • image:指定要使用的镜像名称 。可以是公共镜像(例如 nginxmysql等),也可以是本地构建的私有镜像 。如果指定了 build,则会优先使用构建的镜像 。
    • build:用于指定构建镜像所需的 Dockerfile 的路径 。可以是相对于 Docker Compose 文件的相对路径,或者是包含 Git URL 的完整路径 。
    • ports:定义容器和主机之间的端口映射关系 。可以是单个端口 , 也可以是一个范围 。格式为 [主机端口]:[容器端口] 。例如,ports: - "8080:80" 表示将容器内的 80 端口映射到主机的 8080 端口 。
    • volumes:定义容器和主机之间的文件卷绑定关系 。格式为 [主机路径]:[容器路径],可以指定只读或可写 。例如 , volumes: - "./data:/app/data:ro" 表示将主机上的 ./data 目录挂载到容器内的 /app/data 路径,并以只读方式访问 。
    • environment:设置容器中的环境变量 。可以是一个键值对或一个列表 。例如,environment: - MYSQL_ROOT_PASSword=mysecretpassword 设置了一个名为 MYSQL_ROOT_PASSWORD 值为 mysecretpassword 的环境变量 。
    • depends_on:指定服务之间的依赖关系 。例如 , depends_on: - db 表示该服务依赖于名为 db 的服务,在启动时会先启动 db 服务 。
    • command:定义容器启动时要执行的命令 。例如,command: bundle exec rails server 表示在容器启动时执行 bundle exec rails server 命令 。
  • 网络(networks):用于定义网络配置 。
    • driver:指定网络使用的驱动程序 。常见的驱动程序有 bridgeoverlaymacvlan 等 。
    • driver_opts:用于指定特定驱动程序的选项 。例如,driver_opts: myoption: value 可以设置自定义选项 。
  • 数据卷(volumes):用于创建和管理数据卷 。
    • external:指定数据卷是否为外部数据卷,意味着数据卷由外部创建和管理 。
  • 命令(command):定义容器启动时要执行的命令 。
  • 链接(links):定义服务之间的链接关系 , 使一个服务可以通过名称引用另一个服务 。
需要注意的是,在编写 Docker Compose 文件时 , 缩进和格式非常重要 。使用正确的缩进,并确保语法正确才能成功构建和启动服务 。
7. 常用的 Docker Compose 命令当使用 Docker Compose 来管理容器化应用程序时,下面是一些常用的 Docker Compose 命令,让我们一起来了解一下:
  • 启动应用(up):使用 docker-compose up 命令可以启动 Docker Compose 文件中全部应用程序 。该命令将会检查并构建镜像(如果需要),然后启动相关的容器 。up 命令后常跟 -d 选项,用于后台运行应用程序 , 而不是在命令行中显示日志输出 。
$ docker-compose up -d
  • 停止应用(down):使用 docker-compose down 命令可以将会停止 up 命令所启动的容器,并移除网络、删除相关的容器,这将清理掉应用程序的所有资源 。例如:
$ docker-compose down
  • 停止服务(stop):使用 docker-compose stop 命令可以停止已经处于运行状态的容器 , 但不删除它 。通过 docker-compose start 可以再次启动这些容器 。例如:
$ docker-compose stop [options] [SERVICE...]


推荐阅读