Skip to content
Snippets Groups Projects
docker-compose.yml 2.49 KiB
Newer Older
version: '3.8'

services:
  server:
    container_name: server
    image: server:1.0.0
    build:
      context: ./backend
      dockerfile: Dockerfile
    command: npm run start:debug
    ports:
    networks:
      - backend-network
    volumes:
      # changes in host's ./backend directory will be propagated to the container
      - ./backend:/usr/src/app
      # this prevents our host files from overriding container's node_modules
      - exclude-server:/usr/src/app/node_modules/
    environment:
      - PORT=${SERVER_PORT}

  postgres:
    container_name: postgres
    image: postgres:14.3-alpine
    ports:
      - 127.0.0.1:${DB_PORT}:${DB_PORT}
    volumes:
      - ./backend/database-storage:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    restart: always

  adminer:
    container_name: adminer
    image: adminer:4.8.1
    ports:
      - 127.0.0.1:${ADMINER_PORT}:${ADMINER_PORT}
    environment:
      ADMINER_DESIGN: nette
    restart: always
    depends_on:
Lukáš Kratochvíl's avatar
Lukáš Kratochvíl committed
  nginx:
    container_name: nginx
    image: nginx:1.21.6-alpine
    ports:
      - 127.0.0.1:${NGINX_PORT}:${NGINX_PORT}
Lukáš Kratochvíl's avatar
Lukáš Kratochvíl committed
    volumes:
      - ./nginx/templates:/etc/nginx/templates
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    environment:
      - NGINX_PORT=${NGINX_PORT}
      - SERVER_PORT=${SERVER_PORT}
    restart: always
    depends_on:
      - server
      - postgres

  client:
    container_name: client
    image: client:1.0.0
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - 127.0.0.1:${CLIENT_PORT}:${CLIENT_PORT}
    volumes:
      # changes in host's ./frontend directory will be propagated to the container
      - ./frontend:/usr/src/app
      # this prevents our host files from overriding container's node_modules
      - exclude-client:/usr/src/app/node_modules/
    environment:
      - PORT=${CLIENT_PORT}
      # all the traffic goes through Nginx server
    driver: bridge
  exclude-server:
  exclude-client: