Skip to content

Docker-compose

Docker-compose example template

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./site:/usr/share/nginx/html
  • image — which container image to run
  • ports — expose ports
  • volumes — mount folders/files
  • environment — env variables
  • depends_on — startup order
  • restart — restart policy
  • build — build from Dockerfile
  • command — override default CMD

More examples

MkDocs in Docker

services:
  mkdocs:
    build: .
    container_name: mkdocs
    ports:
      - "8000:8000"
    volumes:
      - ./matywaky-mkdocs:/mkdocs

Simple project

NGINX + Python (flask) + Postgresql

services:
  frontend:
    image: nginx:1.30.2-alpine3.23
    container_name: frontend
    networks:
      - mycomposenetwork
    ports:
      - "8080:80"
    volumes:
      - ./frontend:/usr/share/nginx/html

  backend:
    build: ./backend
    container_name: backend
    networks:
      - mycomposenetwork
    ports:
      - "5000:5000"

  database:
    image: postgres:19beta1-alpine3.23
    container_name: database
    networks:
      - mycomposenetwork
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=users
    volumes:
      - ./database:/var/lib/postgresql
      - ./database/init:/docker-entrypoint-initdb.d

networks:
  mycomposenetwork:
    driver: bridge