Docker-compose cheat sheet
All the istructions that you need to start a Docker container
Wednesday, January 17, 2024
Tags:
Docker
DevOps
read
A cheat sheet to create you docker-compose.yml version: ‘3.8’
Build the image
Copy code
web:
# build from Dockerfile
build: .
# alternative to use a folder with more than one Dockerfile:
build:
context: ./dir # path to Dockerfile
dockerfile: Dockerfile.dev #name of the file
target: dev # specify the target in a multi-stage build
# build from image
image: ubuntu
image: ubuntu:14.04
Init
Run the service as PID 1. Set this option to true to enable this feature for the service.
Copy code
services:
web:
image: alpine:latest
init: true
Expose port
Copy code
ports:
- "3000"
- "8000:80" # guest:host
# expose ports to linked services (not to host)
expose: ["3000"]
Commands and Entrypoint
Copy code
# command to execute
command: bundle exec thin -p 3000
command: [bundle, exec, thin, -p, 3000]
# override the entrypoint
entrypoint: /app/start.sh
entrypoint: [php, -d, vendor/bin/phpunit]
Environment variables
Copy code
# environment vars
environment:
RACK_ENV: development
environment:
- RACK_ENV=development
# environment vars from file
env_file: .env
env_file: [.env, .development.env]
Health check
Copy code
# declare service healthy when `test` command succeed
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
Dependencies
Copy code
# make sure `db` is alive before starting
depends_on:
- db
# make sure `db` is healty before starting
# and db-init completed without failure
depends_on:
db:
condition: service_healthy
db-init:
condition: service_completed_successfully
Volumes
Copy code
volumes:
- /var/lib/mysql # anonimous volume
- ./host_path:/docker_container_path # bind mount
Copy code
volumes:
- type: bind
source: ./host_path
target: /docker_container_path
- type: volume
# no source. Override the previous volumes for a specific path
target: /node_modules
Restart
Copy code
# automatically restart container
restart: unless-stopped
# always, on-failure, no (default)
User
Copy code
# specifying user
user: root
Copy code
# specifying both user and group with ids
user: 0:0
Commands
Copy code
# Starts existing containers.
docker-compose start
# Stops running containers.
docker-compose stop
# Pauses running containers.
docker-compose pause
# Unpauses paused.
docker-compose unpause
# Lists containers.
docker-compose ps
# Builds, (re)creates, starts, and attaches to containers for a service.
docker-compose up
# Stops and removes containers.
docker-compose down
Based on https://devhints.io/docker-compose