docker-compose命令格式:docker-compose [-f=...][options][COMMAND][ARGS...] 参数:
-f,--file FILE:指定模板文件,默认为docker-compose.yml,可以多次指定 -p,--project-name NAME:指定项目名称,默认将使用所在目录名称作为项目名 --x-networking:使用Docker的可插拔网络后端特性 --x-network-driver DRIVER:指定网络后端的驱动,默认为bridge --verbose:输出更多调试信息 -v,--version:打印版本并退出 --log-level LEVEL:设置日志级别DEBUG/INFO/WARNING/ERROR/CRITICAL
4.0、docker-compose.yml
实例
# yaml 配置实例,指定了3个web服务:web1、web2、web3
version: '2'
services:
web1:
image: nginx
ports:
- "6061:80"
container_name: "web1"
networks:
- dev
web2:
image: nginx
ports:
- "6062:80"
container_name: "web2"
networks:
- dev
- pro
web3:
image: nginx
ports:
- "6063:80"
container_name: "web3"
networks:
- pro
networks:
dev:
driver: bridge
pro:
driver: bridge
container_name: my-web-container
4.6、devices:指定设备的映射关系
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
dns_search: example.com
dns_search:
- dc1.example.com
- dc2.example.com
extra_hosts:
- "googledns:8.8.8.8"
volumes:
- /var/lib/mysql
- cache/:/tmp/cache
- ~/configs:/etc/configs/:ro
nproc: 65535
nofile:
soft: 20000
hard: 40000
4.22、entrypoint:覆盖容器默认的 entrypoint
entrypoint: /code/entrypoint.sh
4.23、restart
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
4.24、secrets:存储敏感数据,例如密码:
version: "3.1"
services:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/my_secret
secrets:
- my_secret
secrets:
my_secret:
file: ./my_secret.txt
$ mkdir composetest
$ cd composetest
composetest/app.py 文件代码:
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
docker-compose.yml 配置文件:
# yaml 配置
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
该 Compose 文件定义了两个服务:web 和 redis。