Skip to content

Cheatsheet 5.1 - Docker Compose commands

Services are defined in the docker-compose.yml. This must be located in the current directory. <service...> can be replaced by one or more services. You can omit it completely, in which case the command is applied to all services.

Command Description
docker compose up -d <service...> Create and start one or more services
docker compose down Stop and delete all services
docker compose build <service...> Build one or more services
docker compose pull <service...> Pull the images of one or more services
docker compose logs <service...> Output the logs from one or more services
docker compose ps Display the running containers
docker compose top <service...> List the running processes of one or more services
docker compose create <service...> Create one or more services
docker compose start <service...> Start one or more services
docker compose stop <service...> Stop one or more services
docker compose rm <service...> Delete one or more services
docker compose exec <service> <command> Execute command in container with TTY
docker compose exec -T <service> <command> Execute command in container without TTY

Cheatsheet 5.2 - docker-compose.yml

All entries beginning with cw- are freely selectable names. All lines that begin with # are comments.

Structure

services:
  # create one or more services
  cw-webapp:
    # build and image are mutually exclusive.
    # build points to a directory containing the Dockerfile. This
    # file will be build
    build: ./path/to/directory
    # define the image with optional tag. Will be pulled if not present
    image: <image>:<tag>

    # optional: overwrite entrypoint
    entrypoint: /bin/bash
    # optional: overwrite command
    command: echo $MYSQL_USER

    # List of dependend services
    ## This service (cw-webapp) will be started after all services it
    ## depends on have started
    depends_on:
      - cw-database

    # List of port forwarding entries
    ports:
      -  5000:5000

    # List of volumes
    volumes:
      - cw-webapp-volume:/app/data/notes

    # List of networks
    networks:
      - cw-database-network

    # List of environment variables
    environment:
      - "MYSQL_USER=example-user"
      - "MYSQL_PASSWORD=..."

  # second service:
  cw-database:
    [...]

# (optional) create one or more managed volumes
volumes:
  cw-webapp-volume:

# (optional) create one or more networks
networks:
  cw-database-network: