我有一个依赖redis进行集成测试的应用程序。
我像在Docker容器中一样运行集成测试,
Dockerfile.test
FROM clementoh/openjdk:jdk8-gradle-5.2.1
WORKDIR /app
COPY . .
RUN ./gradlew test
我正在尝试使用Docker Compose来运行我的测试,如下所示:
docker-compose.yml
version: '3'
services:
redis:
image: "redis:5.0.4"
web:
build:
context: .
dockerfile: Dockerfile.test
environment:
- SPRING_REDIS_HOST=redis
- SPRING_REDIS_PORT=6379
depends_on:
- redis
我遇到的问题是docker compose想要先构建Web服务,然后再启动Redis,然后再启动Web服务。此时,redis尚未启动,因此在Dockerfile.test
中运行的测试失败。
启动Redis之后是否可以运行Web服务的构建?
答案 0 :(得分:1)
您可以使用ENTRYPOINT
或CMD
来执行./gradlew test
。
发布您可以启动服务的信息-
$ docker-compose up
这样,始终在Web服务的入口点或CMD执行之前启动redis服务。