version: '3' services: boulder: # Should match one of the GO_DEV_VERSIONS in test/boulder-tools/tag_and_upload.sh. image: &boulder_image letsencrypt/boulder-tools:${BOULDER_TOOLS_TAG:-go1.21.3_2023-10-12} environment: # To solve HTTP-01 and TLS-ALPN-01 challenges, change the IP in FAKE_DNS # to the IP address where your ACME client's solver is listening. # FAKE_DNS: 172.17.0.1 FAKE_DNS: 10.77.77.77 BOULDER_CONFIG_DIR: &boulder_config_dir test/config GOFLAGS: -mod=vendor # Forward the parent env's GOEXPERIMENT value into the container. GOEXPERIMENT: ${GOEXPERIMENT} volumes: - .:/boulder:cached - ./.gocache:/root/.cache/go-build:cached - ./.hierarchy:/hierarchy/:cached - ./.softhsm-tokens/:/var/lib/softhsm/tokens/:cached networks: bluenet: ipv4_address: 10.77.77.77 rednet: ipv4_address: 10.88.88.88 redisnet: ipv4_address: 10.33.33.33 consulnet: ipv4_address: 10.55.55.55 # Use consul as a backup to Docker's embedded DNS server. If there's a name # Docker's DNS server doesn't know about, it will forward the query to this # IP (running consul). # (https://docs.docker.com/config/containers/container-networking/#dns-services). # This is used to look up service names via A records (like ra.service.consul) that # are configured via the ServerAddress field of cmd.GRPCClientConfig. # TODO: Remove this when ServerAddress is deprecated in favor of SRV records # and DNSAuthority. dns: 10.55.55.10 ports: - 4001:4001 # ACMEv2 - 4002:4002 # OCSP - 4003:4003 # OCSP depends_on: - bmysql - bproxysql - bredis_1 - bredis_2 - bredis_3 - bredis_4 - bconsul - bjaeger entrypoint: test/entrypoint.sh working_dir: &boulder_working_dir /boulder bmysql: image: mariadb:10.5 networks: bluenet: aliases: - boulder-mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" # Send slow queries to a table so we can check for them in the # integration tests. For now we ignore queries not using indexes, # because that seems to trigger based on the optimizer's choice to not # use an index for certain queries, particularly when tables are still # small. command: mysqld --bind-address=0.0.0.0 --slow-query-log --log-output=TABLE --log-queries-not-using-indexes=ON logging: driver: none bproxysql: image: proxysql/proxysql:2.5.4 # The --initial flag force resets the ProxySQL database on startup. By # default, ProxySQL ignores new configuration if the database already # exists. Without this flag, new configuration wouldn't be applied until you # ran `docker compose down`. entrypoint: proxysql -f --idle-threads -c /test/proxysql/proxysql.cnf --initial volumes: - ./test/:/test/:cached depends_on: - bmysql networks: bluenet: aliases: - boulder-proxysql bredis_1: image: redis:6.2.7 volumes: - ./test/:/test/:cached command: redis-server /test/redis-ocsp.config networks: redisnet: ipv4_address: 10.33.33.2 bredis_2: image: redis:6.2.7 volumes: - ./test/:/test/:cached command: redis-server /test/redis-ocsp.config networks: redisnet: ipv4_address: 10.33.33.3 bredis_3: image: redis:6.2.7 volumes: - ./test/:/test/:cached command: redis-server /test/redis-ratelimits.config networks: redisnet: ipv4_address: 10.33.33.4 bredis_4: image: redis:6.2.7 volumes: - ./test/:/test/:cached command: redis-server /test/redis-ratelimits.config networks: redisnet: ipv4_address: 10.33.33.5 bconsul: image: hashicorp/consul:1.15.4 volumes: - ./test/:/test/:cached networks: consulnet: ipv4_address: 10.55.55.10 bluenet: ipv4_address: 10.77.77.10 rednet: ipv4_address: 10.88.88.10 command: "consul agent -dev -config-format=hcl -config-file=/test/consul/config.hcl" netaccess: image: *boulder_image environment: GO111MODULE: "on" GOFLAGS: -mod=vendor BOULDER_CONFIG_DIR: *boulder_config_dir networks: - bluenet volumes: - .:/boulder working_dir: *boulder_working_dir entrypoint: test/entrypoint-netaccess.sh bjaeger: image: jaegertracing/all-in-one:1.44 environment: COLLECTOR_OTLP_ENABLED: "true" networks: bluenet: ipv4_address: 10.77.77.17 networks: bluenet: driver: bridge ipam: driver: default config: - subnet: 10.77.77.0/24 rednet: driver: bridge ipam: driver: default config: - subnet: 10.88.88.0/24 redisnet: driver: bridge ipam: driver: default config: - subnet: 10.33.33.0/24 consulnet: driver: bridge ipam: driver: default config: - subnet: 10.55.55.0/24