docker-composer

配置文件

配置文件模板

compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。当然也可以指定使用其他名称。 docker-compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

# yaml 配置实例
version: '3'
services:
  php:
    image: registry.cn-hangzhou.aliyuncs.com/hiwangqi/php:7.2.27-fpm
    container_name: "dev-php"
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - ./php-fpm:/log/
  nginx:
    image: nginx
    container_name: "dev-nginx"
    restart: always
    ports:
      - "80:80"
    links:
      - php
    depends_on:
      - php
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx/
      - ./gns:/var/www/html

配置说明

1. image

指定镜像名称或者镜像id,如果不存在则会拉去镜像

services:
  php:
    image: registry.cn-hangzhou.aliyuncs.com/hiwangqi/php:7.2.27-fpm
2. build

服务的构建可以是基于指定镜像,也可以是基于Dockerfile,在使用docker-compose up启动时执行构建任务,构建的配置项是build,可以指定Dockerfile所在的文件路径。

services:
  php:
    build:
      context: .    #"."当前目录下
      dockerfile: Dockerfile    #dockerfile文件

context 选项可以是文件路径,也可以是到链接到git仓库的url。 dockerfile 使用dockerfile文件来构建,必须指定构建路径,dockerfile指令不能跟image同时使用

3. container_name

Compose的容器名称格式是:<项目名称><服务名称><序号>,也可以自定义,能够起到标识作用即可。

container_name: "dev-php"
4. ports

指定端口映射,本机端口和容器端口进行映射

services:
  php:
    prots:
      - "9000:9000" #访问本机9000端口则可以访问到容器的9000端口
4. depends_on

容器起来顺序,比如应用需要连接Mysql,这时候就必须mysql先启动起来。

services:
  php:
    depends_on:
      - mysql #依赖mysql服务,mysql先启动
  mysql: #mysql服务
     ...

常用命令

$ docker-compose up                         # 创建并且启动所有容器
$ docker-compose up -d                      # 创建并且后台运行方式启动所有容器
$ docker-compose up nginx php mysql         # 创建并且启动nginx、php、mysql的多个容器
$ docker-compose up -d nginx php  mysql     # 创建并且已后台运行的方式启动nginx、php、mysql容器


$ docker-compose start php                  # 启动服务
$ docker-compose stop php                   # 停止服务
$ docker-compose restart php                # 重启服务
$ docker-compose build php                  # 构建或者重新构建服务

$ docker-compose rm php                     # 删除并且停止php容器
$ docker-compose down                       # 停止并删除容器,网络,图像和挂载卷