services: guacamole: image: guacamole/guacamole:latest container_name: guacamole restart: unless-stopped environment: - GUACD_HOSTNAME=guacd - MYSQL_HOSTNAME=guacamole-db - MYSQL_DATABASE=guacamole_db - MYSQL_USER=guacamole_user - MYSQL_PASSWORD=guacamole_pass ports: - "8199:8080" networks: - guacamole-internal depends_on: guacamole-db: condition: service_healthy mem_limit: 512M memswap_limit: 512M 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" guacd: image: guacamole/guacd:latest container_name: guacd restart: unless-stopped networks: - guacamole-internal mem_limit: 512M memswap_limit: 512M logging: driver: "json-file" options: max-size: "50m" max-file: "3" guacamole-db: image: mysql:8.0 container_name: guacamole-db user: "1024:100" restart: unless-stopped command: --innodb-use-native-aio=0 --innodb-buffer-pool-size=128M environment: - MYSQL_ROOT_PASSWORD=guacamole_root - MYSQL_DATABASE=guacamole_db - MYSQL_USER=guacamole_user - MYSQL_PASSWORD=guacamole_pass volumes: - /var/lib/guacamole-db:/var/lib/mysql networks: - guacamole-internal mem_limit: 512M memswap_limit: 512M labels: - "com.centurylinklabs.watchtower.enable=false" 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" networks: guacamole-internal: driver: bridge