forked from letsencrypt/boulder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
176 lines (165 loc) · 4.91 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
version: '3'
services:
boulder:
# The `letsencrypt/boulder-tools:latest` tag is automatically built in local
# dev environments. In CI a specific BOULDER_TOOLS_TAG is passed, and it is
# pulled with `docker compose pull`.
image: letsencrypt/boulder-tools:${BOULDER_TOOLS_TAG:-latest}
build:
context: test/boulder-tools/
# Should match one of the GO_DEV_VERSIONS in test/boulder-tools/tag_and_upload.sh.
args:
GO_VERSION: 1.21.5
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: test/config
GOCACHE: /boulder/.gocache/go-build
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"
bjaeger:
image: jaegertracing/all-in-one:1.50
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