Mẫu file cơ bản
# docker-compose.yml
version: '2'
services:
web:
build: .
# build from Dockerfile
context: ./Path
dockerfile: Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: redis
Commands
docker-compose start docker-compose stop
docker-compose pause docker-compose unpause
docker-compose ps docker-compose up docker-compose down
Reference
Building
web:
# build từ Dockerfile
build: .
args: # Add build arguments
APP_HOME: app
# build từ custom Dockerfile
build:
context: ./dir
dockerfile: Dockerfile.dev
# build từ image image: ubuntu image: ubuntu:14.04 image: tutum/influxdb image: example-registry:4000/postgresql image: a4bc65fd
Ports
ports:
- "3000"
- "8000:80" # host:container
# expose ports đến linked services (not to host) expose: ["3000"]
Commands
# command để execute command: bundle exec thin -p 3000 command: [bundle, exec, thin, -p, 3000]
# ghi đè entrypoint entrypoint: /app/start.sh entrypoint: [php, -d, vendor/bin/phpunit]
Environment variables
# environment vars
environment:
RACK_ENV: development
environment:
- RACK_ENV=development
# environment vars từ file env_file: .env env_file: [.env, .development.env]
Dependencies
# làm cho "db" service có sẵn như là hostname "database"
links:
- db:database
- redis
# đảm bảo rằng "db" start trước
depends_on:
- db
Other options
# Sử dụng file yaml khác kèm theo
extends:
file: common.yml # optional
service: webapp
volumes:
- /var/lib/mysql
- ./_data:/var/lib/mysql
Các tính năng nâng cao
Labels
services:
web:
labels:
com.example.description: "Accounting web app"
DNS servers
services:
web:
dns: 8.8.8.8
dns:
- 8.8.8.8
- 8.8.4.4
Devices
services:
web:
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
External links
services:
web:
external_links:
- redis_1
- project_db_1:mysql
Hosts
services:
web:
extra_hosts:
- "somehost:192.168.1.100"
Network
# tạo một network với tên là "frontend" networks: frontend:
External network
# Join vào network đã tồn tại
networks:
default:
external:
name: frontend
Volume
# Mount host paths hoặc volume đã được đặt tên, cụ thể như một tùy chọn nhỏ trong service
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
dbdata:
