Containers Docker

Après quelques jours de productions et quelques nuits blanches de plus :
voici la mise à jour de mes dockers.

Portainer
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:latest
    environment:
      - TZ=Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "9000:9000/tcp"
      - "9443:9443/tcp"
    restart: unless-stopped
Docker Proxy
  dockerproxy:
    container_name: dockerproxy
    image: tecnativa/docker-socket-proxy:latest
    environment:
      - TZ=Europe/Paris
      - BUILD=1
      - COMMIT=1
      - CONFIGS=1
      - CONTAINERS=1
      - DISTRIBUTION=1
      - EXEC=1
      - IMAGES=1
      - INFO=1
      - NETWORKS=1
      - NODES=1
      - PLUGINS=1
      - SERVICES=1
      - SESSSION=1
      - SWARM=1
      - SYSTEM=1
      - TASKS=1
      - VOLUMES=1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "2375:2375/tcp"
    privileged: true
    restart: unless-stopped
Home Assitant
  homeassistant:
    container_name: homeassistant
    image: homeassistant/home-assistant:latest
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./homeassistant:/config:rw
      - /etc/localtime:/etc/localtime:ro
      - /media:/media:rw
      # - /run/dbus:/run/dbus:ro # <-- Bluetooth adapter
    ports:
      - "8123:8123/tcp"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://${SERVER_IP}:8123/"]
      interval: 25s
      timeout: 3s
      start_period: 30s
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    privileged: true
    network_mode: host
    restart: unless-stopped
    depends_on:
      - mariadb
      - influxdb
      - mosquitto
    labels:
        - "com.centurylinklabs.watchtower.enable=false"
  • Pour un adaptateur Bluetooth
    Install DBus-broker package sudo apt install dbus-broker
    Enable system service sudo systemctl enable dbus-broker.service
    Install BlueZ package sudo apt install bluez
DuckDNS - Update IP to DNS
  duckdns:
    image: linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - TZ=Europe/Paris
      - SUBDOMAINS=${DUCKDNS_DOMAIN}
      - TOKEN=${DUCKDNS_TOKEN}

- Me reste à mettre au point le « Cerbot DNS DuckDNS » → Pas besoin Cf Message suivant !

Nginx Proxy Manager
  nginx:
    container_name: nginx
    image: 'jc21/nginx-proxy-manager:latest'
    environment:
      DB_MYSQL_HOST: ${SERVER_IP}
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: ${MYSQL_HA_USER}
      DB_MYSQL_PASSWORD: ${MYSQL_HA_PASSWORD}
      DB_MYSQL_NAME: ${MYSQL_NGINX_DATABASE}
      DISABLE_IPV6: true
    volumes:
      - ./nginx/data:/data
      - ./nginx/letsencrypt:/etc/letsencrypt
      - ./nginx/config:/app/config
      # - ./nginx/log:/var/log/nginx
      # - ./nginx/custom:/data/nginx/custom
    ports:
      - "80:80/tcp" # Public HTTP Port
      - "443:443/tcp" # Public HTTPS Port
      - "81:81/tcp" # Admin Web Port
      # - "21:21/tcp" # FTP
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s
    restart: unless-stopped
    depends_on:
      - mariadb
MariaDB
  mariadb:
    container_name: mariadb
    image: jc21/mariadb-aria:latest
    environment:
      - TZ=Europe/Paris 
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_HA_DATABASE}
      - MYSQL_USER=${MYSQL_HA_USER}
      - MYSQL_PASSWORD=${MYSQL_HA_PASSWORD}
    volumes:
      - ./mariadb/data:/var/lib/mysql:rw
      - ./mariadb/config:/etc/mysql:rw
    ports:
      - "3306:3306/tcp"
    restart: unless-stopped
    labels:
        - "com.centurylinklabs.watchtower.enable=false"
PHP MyAdmin
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin:latest
    environment:
     - PMA_ARBITRARY=1
     - PMA_HOST=${SERVER_IP}
     - PMA_USER=${MYSQL_HA_USER}
     - PMA_PASSWORD=${MYSQL_HA_PASSWORD}
    volumes:
     - /sessions
    ports:
      - "8080:80/tcp"
    restart: unless-stopped
    depends_on:
      - mariadb
InfluxDB V2
  influxdb:
    container_name: influxdb
    image: influxdb:latest
    environment:
      - TZ=Europe/Paris     
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUX_ADMIN_TOKEN}
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USER}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
      - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_INFLUXDB_INIT_RETENTION=0s
    volumes:
      - ./influxdb2/data:/var/lib/influxdb2
      - ./influxdb2/config/config.yml:/etc/influxdb2/config.yml:rw
      # - ./influxdb2/scripts:/docker-entrypoint-initdb.d
    ports:
       - "8086:8086/tcp"
    restart: unless-stopped 
  • Pour créer le fichier de configuration
    docker run --rm influxdb influxd print-config > influxdb/config.yml
Telegraf
  telegraf:
    container_name: telegraf
    image: telegraf
    environment:
      - TZ=Europe/Paris
      # - HOST_PROC=/rootfs/proc
      # - HOST_SYS=/rootfs/sys
      # - HOST_ETC=/rootfs/etc           
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw 
      - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:rw
    ports:
      - "6514:6514/tcp"
    restart: unless-stopped
    tty: true
    links:
      - influxdb:influxdb
    depends_on:
      - influxdb```
  • Pour créer le fichier de configuration
    docker run --rm telegraf telegraf config > telegraf/telegraf.conf
Grafana
  grafana:
    container_name: grafana
    image: grafana/grafana:latest
    environment:
      - TZ=Europe/Paris
      - GF_RENDERING_SERVER_URL=http://${SERVER_IP}:8081/render
      - GF_RENDERING_CALLBACK_URL=http://${SERVER_IP}:3000
      - GF_LOG_FILTERS="rendering=debug"
      - GF_SECURITY_ADMIN_USER=${GRAFANA_USER} 
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
    ports:
      - "3000:3000/tcp"  
    restart: unless-stopped
     links:
        - influxdb:influxdb
     depends_on:
         - influxdb
         - renderer  
Renderer
  renderer:
    container_name: renderer
    image: grafana/grafana-image-renderer:latest
    environment:
      ENABLE_METRICS: 'true'
    ports:
      - "8081:8081/tcp"
    restart: unless-stopped
Mosquitto
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    environment:
      - TZ=Europe/Paris  
    volumes:
      - ./mosquitto/config:/mosquitto/config:rw
      - ./mosquitto/data:/mosquitto/data:rw
      - ./mosquitto/log:/mosquitto/log:rw
    ports:
      - "1883:1883/tcp"
    restart: unless-stopped
    stdin_open: true
    tty: true
ESPHome
  esphome:
    container_name: esphome
    image: esphome/esphome:latest
    environment:
      - TZ=Europe/Paris  
    volumes:
      - ./esphome:/config:rw
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "6052:6052/tcp"
    #devices:
      # - /dev/ttyUSB1:/dev/ttyUSB1
    restart: unless-stopped
    network_mode: host
Samba Share
  samba:
    container_name: samba
    image: elswork/samba:latest
    command: '-s "<rep mappé>:/<rep mappé>rw:<user>" -u "1000:1000:<user>:<group>:<mdp>"'
    environment:
      - TZ="Europe/Paris"
    volumes:
      - /<rep des docker>:/<rep mappé>
    ports:
      - "139:139/tcp"
      - "445:445/tcp"
    restart: unless-stopped
MyElectricalData
  myelectricaldata:
    container_name: myelectricaldata
    image:  m4dm4rtig4n/myelectricaldata:latest
    environment:
      TZ: Europe/Paris
    volumes:
      - ./myelectricaldata:/data:rw
    ports:
      - "5000:5000/tcp"
    restart: unless-stopped
    links:
      - influxdb
      - mosquitto
VsCode
  vscode:
    container_name: vscode
    image: codercom/code-server:latest
    environment:
      TZ: Europe/Paris
      PASSWORD: ${VSCODE_PASSWORD}
    volumes:
      -<rep des docker>:/<rep mappé>
      - ./vscode:/home/coder/.local/share/code-server
    ports:
      - "8443:8443/tcp"
    command: code-server --auth none --disable-telemetry /home/coder/project
    restart: unless-stopped
Watchower

watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- TZ=Europe/Paris
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_LOG_LEVEL=trace
- WATCHTOWER_TIMEOUT=30s
- WATCHTOWER_ROLLING_RESTART=true
- WATCHTOWER_SCHEDULE=0 0 5 * * *
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- « com.centurylinklabs.watchtower.enable=true »
restart: unless-stopped

  • Rajouter dans les dockers à ne pas mettre à jour automatiquement :
    labels:
    - « com.centurylinklabs.watchtower.enable=false »