Skip to main content

Docker Compose : Installation

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      # Mysql/Maria connection parameters:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db
    labels:
      com.centurylinklabs.watchtower.enable: true
      
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
      MARIADB_AUTO_UPGRADE: '1'
    volumes:
      - ./mysql:/var/lib/mysql
    labels:
      com.centurylinklabs.watchtower.enable: true

  watchtower:
    container_name: watchtower
    image: 'docker.io/containrrr/watchtower:latest'
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # https://containrrr.dev/watchtower/arguments/#time_zone
      TZ: "Europe/Paris"
      # https://containrrr.dev/watchtower/arguments/#scheduling
      # Attention : format crontab en 6 champs (avec les secondes donc) au lieu des 5 traditionnels (au besoin, utiliser crontab guru :https://crontab.guru)
      WATCHTOWER_SCHEDULE: "0 0 6 * * *"
      # https://containrrr.dev/watchtower/arguments/#cleanup
      WATCHTOWER_CLEANUP: true
      # https://containrrr.dev/watchtower/arguments/#remove_anonymous_volumes
      WATCHTOWER_REMOVE_VOLUMES: true
      # https://containrrr.dev/watchtower/arguments/#include_stopped
      WATCHTOWER_INCLUDE_STOPPED: true
      # https://containrrr.dev/watchtower/arguments/#revive_stopped
      # S # Si éventuellement souhaité, variable positionnée à true pour démarrer le conteneur onetime 'certbot' (qui serait donc en statut 'STOPPED') après qu'il >
      WATCHTOWER_REVIVE_STOPPED: true
      #https://containrrr.dev/watchtower/arguments/#filter_by_enable_label