version: '3.6' services: consul: build: args: - CONSUL_VERSION=1.11.1 - DOCKER_BUILD_DIR=docker/consul context: ../.. dockerfile: docker/consul/Dockerfile container_name: ${NODE_COMPOSE_PROJECT_NAME}_consul image: ${NODE_DOCKER_REPOSITORY}/consul:${DOCKER_IMAGE_TAG} environment: CONSUL_BIND_INTERFACE: '${DOCKER_HOST_IFACE}' CONSUL_CLIENT_INTERFACE: '${DOCKER_HOST_IFACE}' CONSUL_HTTP_TOKEN: '${NODE_CONSUL_HTTP_TOKEN}' CONSUL_LOCAL_CONFIG: '{ "log_level": "warn" , "enable_script_checks": true , "acl": { "enabled": true , "default_policy": "deny" , "down_policy": "extend-cache" , "enable_token_persistence": true , "tokens": { "initial_management": "${NODE_CONSUL_ACL_TOKENS_MASTER}" , "agent": "${NODE_CONSUL_HTTP_TOKEN}" } } }' hostname: ${HOSTNAME} labels: - SERVICE_8300_IGNORE=true - SERVICE_8301_IGNORE=true - SERVICE_8302_IGNORE=true - SERVICE_8500_CHECK_HTTP=/v1/health/service/consul - SERVICE_8500_NAME=${NODE_COMPOSE_SERVICE_NAME}-consul:8500 - SERVICE_8500_TAGS=${NODE_CONSUL_SERVICE_8500_TAGS} - SERVICE_8600_IGNORE=true - SERVICE_ADDRESS=${DOCKER_HOST_INET4} - SERVICE_CHECK_SCRIPT=docker-healthcheck ${DOCKER_HOST_INET4} network_mode: host restart: always volumes: - consul:/consul/data:delegated - ssl-certs:/certs:ro - /var/run/docker.sock:/var/run/docker.sock fabio: build: args: - DOCKER_BUILD_DIR=docker/fabio - FABIO_VERSION=1.6.0 - OPERATING_SYSTEM=${OPERATING_SYSTEM} - PROCESSOR_ARCHITECTURE=${PROCESSOR_ARCHITECTURE} context: ../.. dockerfile: docker/fabio/Dockerfile container_name: ${NODE_COMPOSE_PROJECT_NAME}_fabio image: ${NODE_DOCKER_REPOSITORY}/fabio:${DOCKER_IMAGE_TAG} command: -registry.backend "consul" -registry.consul.addr "consul:8500" -registry.consul.token "${NODE_CONSUL_HTTP_TOKEN}" -proxy.addr ":80,:443;cs=local" -proxy.cs "cs=local;type=file;cert=/certs/${DOMAIN}.crt.pem;key=/certs/${DOMAIN}.key.pem" depends_on: - consul extra_hosts: - consul:${DOCKER_INTERNAL_DOCKER_HOST} hostname: ${HOSTNAME} labels: - SERVICE_80_CHECK_TCP=true - SERVICE_80_NAME=${NODE_COMPOSE_SERVICE_NAME}-fabio:80 - SERVICE_443_CHECK_TCP=true - SERVICE_443_NAME=${NODE_COMPOSE_SERVICE_NAME}-fabio:443 - SERVICE_9998_CHECK_HTTP=/routes - SERVICE_9998_NAME=${NODE_COMPOSE_SERVICE_NAME}-fabio:9998 - SERVICE_9998_TAGS=${NODE_FABIO_SERVICE_9998_TAGS} - SERVICE_9999_IGNORE=true ports: - 80:80/tcp - 443:443/tcp - 9998/tcp networks: - public restart: always volumes: - ssl-certs:/certs:ro registrator: build: args: - DOCKER_BUILD_DIR=docker/registrator - GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME} - GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL} context: ../.. dockerfile: docker/registrator/Dockerfile container_name: ${NODE_COMPOSE_PROJECT_NAME}_registrator image: ${NODE_DOCKER_REPOSITORY}/registrator:${DOCKER_IMAGE_TAG} command: -internal -cleanup -deregister always -resync=30 -useIpFromNetwork "${DOCKER_NETWORK_PUBLIC}" -useIpFromLabel SERVICE_ADDRESS consul://consul:8500 depends_on: - consul environment: - CONSUL_HTTP_TOKEN=${NODE_CONSUL_HTTP_TOKEN} extra_hosts: - consul:${DOCKER_INTERNAL_DOCKER_HOST} hostname: ${HOSTNAME} network_mode: host restart: always volumes: - /var/run/docker.sock:/tmp/docker.sock volumes: consul: name: ${NODE_COMPOSE_PROJECT_NAME}_consul ssl-certs: external: true name: ${NODE_COMPOSE_PROJECT_NAME}_ssl-certs networks: public: external: true name: ${DOCKER_NETWORK_PUBLIC}