Skip to content

Commit bc3def3

Browse files
committed
Added Docker Compose Cheatsheets and docker-compose.yml Master Template
1 parent 9dba583 commit bc3def3

10 files changed

Lines changed: 523 additions & 0 deletions
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
Modern Docker uses docker compose (plugin)
2+
Older versions used docker-compose
3+
4+
Core Lifecycle Commands
5+
6+
Start services
7+
8+
```bash
9+
docker compose up
10+
docker compose up -d
11+
docker compose up --build
12+
docker compose up -d --build
13+
docker compose up --force-recreate
14+
docker compose up --no-recreate
15+
docker compose up --remove-orphans
16+
docker compose up -d --remove-orphans
17+
```
18+
19+
Stop services
20+
```bash
21+
docker compose stop
22+
docker compose stop web
23+
```
24+
25+
Start stopped services
26+
```bash
27+
docker compose start
28+
docker compose start web
29+
```
30+
31+
Restart services
32+
```bash
33+
docker compose restart
34+
docker compose restart web
35+
```
36+
37+
Shutdown and remove
38+
39+
```bash
40+
docker compose down
41+
docker compose down -v
42+
docker compose down --rmi all
43+
docker compose down --remove-orphans
44+
docker compose down --volumes --remove-orphans
45+
```
46+
47+
Build Commands
48+
```bash
49+
docker compose build
50+
docker compose build web
51+
docker compose build --no-cache
52+
docker compose build --pull
53+
```
54+
55+
Logs
56+
```bash
57+
docker compose logs
58+
docker compose logs -f
59+
docker compose logs web
60+
docker compose logs -f web
61+
docker compose logs --tail=100
62+
docker compose logs --timestamps
63+
```
64+
65+
Process / Status
66+
```bash
67+
docker compose ps
68+
docker compose top
69+
docker compose config
70+
docker compose ls
71+
```
72+
73+
Exec into service
74+
```bash
75+
docker compose exec web bash
76+
docker compose exec web sh
77+
docker compose exec web ls -la
78+
```
79+
80+
Run one-off command
81+
```bash
82+
docker compose run web bash
83+
docker compose run --rm web bash
84+
docker compose run --service-ports web
85+
```
86+
87+
Pull / Push
88+
```bash
89+
docker compose pull
90+
docker compose pull web
91+
docker compose push
92+
docker compose push web
93+
```
94+
95+
Scaling
96+
```bash
97+
docker compose up --scale web=3
98+
docker compose up -d --scale api=5
99+
```
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
Minimal Compose File
2+
3+
```yml
4+
version: "3.9"
5+
6+
services:
7+
web:
8+
image: nginx
9+
ports:
10+
- "8080:80"
11+
```
12+
13+
Full Structure Layout
14+
```yml
15+
version: "3.9"
16+
17+
services:
18+
service_name:
19+
image:
20+
build:
21+
container_name:
22+
ports:
23+
environment:
24+
env_file:
25+
volumes:
26+
networks:
27+
depends_on:
28+
restart:
29+
command:
30+
entrypoint:
31+
working_dir:
32+
user:
33+
healthcheck:
34+
deploy:
35+
logging:
36+
37+
volumes:
38+
volume_name:
39+
40+
networks:
41+
network_name:
42+
```
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
Image vs Build
2+
3+
Using prebuilt image
4+
```yml
5+
services:
6+
web:
7+
image: nginx:latest
8+
```
9+
10+
Using Dockerfile
11+
```yml
12+
services:
13+
api:
14+
build: .
15+
```
16+
17+
18+
Build with context and Dockerfile
19+
```yml
20+
services:
21+
api:
22+
build:
23+
context: .
24+
dockerfile: Dockerfile
25+
```
26+
27+
Ports
28+
```yml
29+
ports:
30+
- "8080:80"
31+
- "127.0.0.1:5000:5000"
32+
```
33+
34+
Format:
35+
```
36+
HOST:CONTAINER
37+
```
38+
39+
Restart Policies
40+
```yml
41+
restart: "no"
42+
restart: always
43+
restart: unless-stopped
44+
restart: on-failure
45+
restart: on-failure:5
46+
```
47+
48+
Depends On
49+
```yml
50+
depends_on:
51+
- db
52+
```
53+
54+
⚠️ Only controls startup order
55+
Does NOT wait for DB to be “ready”
56+
57+
Command Override
58+
```yml
59+
command: ["npm", "start"]
60+
command: python app.py
61+
```
62+
63+
Entrypoint Override
64+
```yml
65+
entrypoint: ["./entrypoint.sh"]
66+
```
67+
68+
Working Directory
69+
```yml
70+
working_dir: /app
71+
```
72+
73+
Container Name
74+
```yml
75+
container_name: my-custom-container
76+
```
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Default Behavior
2+
3+
Compose automatically:
4+
Creates a network
5+
Attaches all services
6+
Enables service-to-service DNS
7+
8+
Example:
9+
10+
http://db:5432
11+
12+
Custom Network
13+
```yml
14+
networks:
15+
backend:
16+
```
17+
18+
Attach to service:
19+
```yml
20+
services:
21+
api:
22+
networks:
23+
- backend
24+
- frontend # multiple networks
25+
```
26+
27+
Define Network
28+
29+
```yml
30+
networks:
31+
backend:
32+
driver: bridge
33+
```
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Named Volume
2+
3+
```yml
4+
services:
5+
db:
6+
image: postgres
7+
volumes:
8+
- pgdata:/var/lib/postgresql/data
9+
10+
volumes:
11+
pgdata:
12+
```
13+
14+
Bind Mount
15+
```yml
16+
volumes:
17+
- ./app:/app
18+
```
19+
20+
Read-only
21+
```yml
22+
volumes:
23+
- ./app:/app:ro
24+
```
25+
26+
Multiple Volumes
27+
```yml
28+
volumes:
29+
- pgdata:/var/lib/postgresql/data
30+
- ./backup:/backup
31+
```
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
Environment Inline
3+
```yml
4+
environment:
5+
- NODE_ENV=production
6+
- PORT=5000
7+
```
8+
9+
OR
10+
11+
```yml
12+
environment:
13+
NODE_ENV: production
14+
PORT: 5000
15+
```
16+
17+
env_file
18+
```yml
19+
env_file:
20+
- .env
21+
- prod.env
22+
```
23+
24+
Docker Compose automatically reads:
25+
.env
26+
27+
In same directory.
28+
29+
Secrets (Swarm mode mainly)
30+
```yml
31+
secrets:
32+
mysecret:
33+
file: ./secret.txt
34+
```
35+
36+
Attach:
37+
```yml
38+
services:
39+
api:
40+
secrets:
41+
- mysecret
42+
```
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
Build args
3+
```yml
4+
build:
5+
context: .
6+
args:
7+
NODE_ENV: production
8+
```
9+
10+
Multi-stage awareness
11+
12+
Compose just triggers Docker build.
13+
Multi-stage defined in Dockerfile.
14+
15+
Force rebuild
16+
```bash
17+
docker compose build --no-cache
18+
docker compose up --build
19+
```
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
Logs
3+
```bash
4+
docker compose logs -f
5+
```
6+
Restart specific service
7+
```bash
8+
docker compose restart api
9+
```
10+
Recreate single service
11+
```bash
12+
docker compose up -d --force-recreate api
13+
```
14+
Remove unused resources
15+
```bash
16+
docker compose down -v
17+
docker system prune
18+
```

0 commit comments

Comments
 (0)