Int*_*uin 5 docker docker-compose
我正在尝试使用 docker 来管理用于测试应用程序的幕后内容,其中需要运行一些内容:mongo、redis、localstack、localstack 数据初始化,然后是应用程序。我在 Docker 之外本地运行该应用程序。为此,我正在运行docker compose up -d && node server.js,但问题是我无法执行附加操作,否则节点命令将永远不会运行,并且如果我执行分离操作,则数据初始化 ( setup-resources) 将不会在节点应用程序运行之前完成。
我的码头工人组成:
services:
mongo:
image: mongo
ports:
- "27017:27017"
redis:
image: redis
ports:
- "6379:6379"
depends_on:
- setup-resources
localstack:
image: localstack/localstack
ports:
- "4566:4566"
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
setup-resources:
build: docker_dev/setup
restart: "no"
environment:
- AWS_ACCESS_KEY_ID=hidden
- AWS_SECRET_ACCESS_KEY=hidden
- AWS_DEFAULT_REGION=hidden
- ROOT_BUCKET
- DPS_ARTIFACTS_ROOT_BUCKET
- THUMBNAIL_BUCKET
depends_on:
- localstack
Run Code Online (Sandbox Code Playgroud)
设置资源dockerfile:
FROM mesosphere/aws-cli
ENTRYPOINT []
ENV ROOT_BUCKET ""
CMD aws --endpoint-url=http://localstack:4566 s3 mb s3://$ROOT_BUCKET-stage
Run Code Online (Sandbox Code Playgroud)
您可以使用 --wait 标志(与 -d 标志一起使用) https://docs.docker.com/engine/reference/commandline/compose_up/
docker compose up -d --wait
Run Code Online (Sandbox Code Playgroud)
它将等到所有容器都处于 RUNNING 和 HEALTHY 状态后再退出(并继续以分离模式运行)。
如果容器比您需要的更早标记为“健康”,您可以定义自己的标准来将容器标记为“健康” https://docs.docker.com/compose/compose-file/#healthcheck
services:
grpc_wiremock:
image: adven27/grpc-wiremock
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8888/__admin/mappings" ]
interval: 10s
timeout: 2s
retries: 30
start_period: 10s
Run Code Online (Sandbox Code Playgroud)
请注意,这将覆盖镜像 Dockerfile 中的运行状况检查(如果存在)。
| 归档时间: |
|
| 查看次数: |
6765 次 |
| 最近记录: |