OpenVPN
Graylog
Unifi Controller

Header

services:
  node:
    container_name: node-server

Image

    image: node:20-alpine
    build:
      context: .
      dockerfile: Dockerfile

Environment

    env_file:
      - .env
    environment:
      LOGIN: user
      PASSWORD: secret

Volumes

    volumes:
      - ./app:/app
      - ./build/file.conf:/file.conf:ro

Ports

    ports:
    - 8080:80
    - 8443:443

Limits

    mem_limit: "1g"
    mem_reservation: "512m"
    cpus: "2"
    cpuset: "0,2"
    ulimits:
      memlock:
        soft: -1
        hard: -1

Command

    command: sh -c "npm install && npm run start"

Restart

    restart: unless-stopped
    restart: on-failure

Logs

    logging:
      driver: "json-file"
      options:
        max-size: "1024m"
        max-file: "3"
     logging:
       driver: journald
    logging:
      driver: gelf
      options:
        gelf-address: "udp://logstash-host:12201"
        tag: "node-server"

Healthcheck

    healthcheck:
      test: curl --fail http://localhost || exit 1
      interval: 60s
      retries: 5
      start_period: 20s
      timeout: 10s

Networks

    networks:
      net-dhcp:
    networks:
     net-static:
       ipv4_address: 10.5.0.8

DNS

    extra_hosts:
      - "server:10.0.0.1"

Dependency

    depends_on:
      name:
        condition: service_healthy

Networks

networks:
  net-dhcp:
    driver: bridge
    ipam:
      driver: default
networks:
 net-static:
   driver: bridge
   ipam:
     driver: default
     config:
       - subnet: 10.9.8.0/24
         gateway: 10.9.8.1
networks:
  net-external:
    external: true

Volumes

volumes:
  volume:
volumes:
  volume:
    external: true