我正尝试使用Docker来管理测试应用程序的后台,需要运行以下几个组件:mongo、redis、localstack、localstack数据初始化和应用程序。我在本地主机上运行应用程序,而不是在Docker中运行。为此,我使用
我的Docker Compose配置如下:
docker compose up -d && node server.js
命令。但问题是如果以附加模式运行该命令,则node命令将永远不会运行;如果以分离模式运行,则数据初始化(setup-resources
)无法在node应用程序之前完成。我的Docker Compose配置如下:
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
设置资源的Dockerfile:
FROM mesosphere/aws-cli
ENTRYPOINT []
ENV ROOT_BUCKET ""
CMD aws --endpoint-url=http://localstack:4566 s3 mb s3://$ROOT_BUCKET-stage