services: guacamole: image: guacamole/guacamole:latest restart: unless-stopped environment: - GUACD_HOSTNAME=guacd - MYSQL_HOSTNAME=guacamole-db - MYSQL_DATABASE=guacamole_db - MYSQL_USER=guacamole_user - MYSQL_PASSWORD=${GUACAMOLE_MYSQL_PASSWORD} ports: - "8199:8080" networks: - traefik-public - guacamole-internal healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8080/guacamole/ || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 60s logging: driver: "json-file" options: max-size: "50m" max-file: "3" deploy: mode: replicated replicas: 1 placement: constraints: - node.hostname == hf-pdocker-01 labels: - "traefik.enable=true" - "traefik.docker.network=traefik-public" - "traefik.http.routers.guacamole.rule=Host(`solo.hobbs.farm`)" - "traefik.http.routers.guacamole.entrypoints=websecure" - "traefik.http.routers.guacamole.tls.certresolver=letsencrypt" - "traefik.http.services.guacamole.loadbalancer.server.port=8080" resources: limits: memory: 512M guacd: image: guacamole/guacd:latest restart: unless-stopped networks: - guacamole-internal logging: driver: "json-file" options: max-size: "50m" max-file: "3" deploy: mode: replicated replicas: 1 placement: constraints: - node.hostname == hf-pdocker-01 resources: limits: memory: 512M guacamole-db: image: mysql:8.0 user: "1024:100" restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=${GUACAMOLE_MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=guacamole_db - MYSQL_USER=guacamole_user - MYSQL_PASSWORD=${GUACAMOLE_MYSQL_PASSWORD} volumes: - /mnt/docker-data/databases/guacamole-db:/var/lib/mysql networks: - guacamole-internal healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 --silent"] interval: 30s timeout: 10s retries: 3 start_period: 30s logging: driver: "json-file" options: max-size: "50m" max-file: "3" deploy: mode: replicated replicas: 1 placement: constraints: - node.hostname == hf-pdocker-01 labels: - "com.centurylinklabs.watchtower.enable=false" resources: limits: memory: 512M networks: traefik-public: external: true guacamole-internal: driver: overlay