docker-compose.yml包含version、services、networks3大部分php
services的书写规则mysql
1.iamgenginx
services: web: # 服务名称,用户自定义 image: busybox # 镜像名称/镜像ID,若是本地不存在compose会拉取镜像
# 如下格式均可
images: redis
images: mysql:latest
images: example-registry.com:4000/postgresql
2.build-------基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,而后启动服务容器web
# 绝对路径 build: /path/build # 相对路径 build:./build # 设定上下文跟目录,以此目录指定Dockerfile build: context: ../ dockerfile: path/Dockerfile # 给Dockerfile构建的镜像命名 build: ./dir images: nginx:latest # 构建过程当中指定环境变量,构建成功后取消 build: context: . args: buildno: 1 password: secret or build: context: . args: - buildno=1 - password=secret ##与ENV不一样,ARG容许空值
3.command-------覆盖容器启动后默认执行的命令redis
command: bundle exec thin -p 3000 or 写成dockerfile的格式 command: [bundle, exec, thin, -p, 3000]
4.container_name-----容器名称sql
container_name: app
5.depends_on-------容器依赖docker
# 基于redis和db服务启动web服务 version: '2' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
6.dns --------json
dns: 8.8.8.8 or dns: - 8.8.8.8 - 9.9.9.9 dns_search: example.com dns_search: - xxxx - xxxx
7. tmpfs--------挂在临时目录到容器内部,与run参数效果一致ubuntu
tmpfs: /run tmpfs: - /run - /tmp
8.entrypoint--------覆盖Dockerfile中ENTRYPOINTminglingruby
entrypoint: /code/entrypoint.sh
#
- php
- -dentrypoint:
9.env_file--------指定配置文件,设置compose的变量(可经过docker-compose -f FILE指定配置文件)
env_file: .env # 若与environment指令冲突,之后者为准
# 可设置多个
env_file:
- ./xx.env
- xx.env
# 此变量不对build构建过程生效
10.environment--------设置镜像变量,启动后的容器会包含这些变量设置
environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET: environment: - RACK_ENV=development - SHOW=true - SESSION_SECRE
11.external_links-------------让compose项目里面的容器连接到项目配置外部的容器(外部容器中必须至少有一个容器连接到项目内服务的同一个网络里)
external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql
12.exra_hosts-----------添加主机名标签(向/etc/hosts文件中添加纪录)
extra_hosts: - "mysql:ip" - "nginx:ip" # 启动容器后查看内部hosts ip mysql ip nginx
13.links-----------连接到其它服务器中的容器
links: - db - db:mysql - redis
# 使用的别名会自动在容器的/etc/hosts里建立
ip db
ip mysql
ip redis
14.logging--------配置日志服务
logging: driver: syslog options: syslog-address: "tcp://ip"
# 默认的dirver是json-file,可经过docker-compose logs显示日志
15.ports---------映射端口(HOST:CONTAINER)
ports: - "3000" - "8000:80" - "2222:22" - "127.0.0.1:8080:8080"
16.volumes-------挂载一个目录或者已经存在的数据卷容器(HOST:CONTAINER/HOST:CONTAINER:ro,后者设定数据卷只读,可保护宿主机器的文件系统)
volumes: // 只是指定一个路径,Docker 会自动在建立一个数据卷(这个路径是容器内部的)。 - /var/lib/mysql // 使用绝对路径挂载数据卷 - /opt/data:/var/lib/mysql // 以 Compose 配置文件为中心的相对路径做为数据卷挂载到容器。 - ./cache:/tmp/cache // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。 - ~/configs:/etc/configs/:ro // 已经存在的命名的数据卷。 - datavolume:/var/lib/mysql
# 从其余容器或者服务挂在数据卷
volumes_from:
- service_name
- service_name: ro
- container: container_name
- container: container_name:rw
17.network_mode-------网络模式:
network_mode: "bridge" network_mode: "host" network_mode: "none" network_mode: "service:[service name]" network_mode: "container:[container name/id]"
18.networks----------加入指定网络
services: some-service: networks: - some-network - other-network
docker compose经常使用命令
docker-compose up -d # 在后台启动服务
docker-compose ps # 查看启动的服务
docker-compose stop #中止服务
#查看帮助 docker-compose -h # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,能够屡次指定。 docker-compose -f docker-compose.yml up -d #启动全部容器,-d 将会在后台启动并运行全部的容器 docker-compose up -d #停用移除全部容器以及网络相关 docker-compose down #查看服务容器的输出 docker-compose logs #列出项目中目前的全部容器 docker-compose ps #构建(从新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,多是 web_db。能够随时在项目目录下运行 docker-compose build 来从新构建服务 docker-compose build #拉取服务依赖的镜像 docker-compose pull #重启项目中的服务 docker-compose restart #删除全部(中止状态的)服务容器。推荐先执行 docker-compose stop 命令来中止容器。 docker-compose rm #在指定服务上执行一个命令。 docker-compose run ubuntu ping docker.com #设置指定服务运行的容器个数。经过 service=num 的参数来设置数量 docker-compose scale web=3 db=2 #启动已经存在的服务容器。 docker-compose start #中止已经处于运行状态的容器,但不删除它。经过 docker-compose start 能够再次启动这些容器。 docker-compose stop