wiremock:
image: registry.myworkplace.com/contributions/wiremock:3x
environment:
WIREMOCK_OPTIONS: "--port 8081 --global-response-templating"
ports:
- "8081:8081"
volumes:
- ./src/test/resources/__files:/home/wiremock/__files
- ./src/test/resources/mappings:/home/wiremock/mappings
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "curl -f http://localhost:8081/__admin/health || exit 1" ]
当我没有自定义HealthCheck应用程序启动时,启动就会被卡住了。 WireMock-1的等待已成为健康(它正在开始)
最终 等待WireMock-1变得健康(不健康)
当我在docker中努力看待在“检查”选项卡上,我发现的容器:
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl -f http://localhost:8080/__admin/health || exit 1"
],
"StartPeriod": 5000000000,
"StartInterval": 100000000
},
这是我想到设定自定义健康检查的想法的原因。 我本来可以预期通过构图上的端口的设置对此进行了更新。
两个数字不需要匹配。 如果服务在容器内使用端口8080,通常可以在主机上的端口8081上访问。
在大多数情况下,将服务的聆听端口保持不变是可以的。 如果构建图像是为了在端口8080上收听,请继续使用该端口。
ports:
如果您是从另一个容器中调用的,则需要确保使用默认服务端口而不是更改的端口。 容器之间的呼叫根本不使用
services:
wiremock:
image: registry.myworkplace.com/contributions/wiremock:3x
environment:
WIREMOCK_OPTIONS: "--global-response-templating" # but no --port
ports:
- "8081:8080" # second port number matches container-internal port
volumes: [...]
restart: unless-stopped
# do not need to override healthcheck:
ports:
。
wiremock: { ports: }
ports:
指令(如果存在)都需要匹配,但是实际上没有任何检查,但是如果您确实尝试更改其中的任何一个,则需要手动更改所有其他。 在您的情况下,图像具有嵌入在命令字符串中的原始端口号8080,并且在该字符串中没有实际的Docker可见连接,例如暴露的端口号(如果有)。