Docker Compose:是否可以在构建另一个服务之前启动服务?

时间:2019-04-15 10:35:12

标签: docker redis docker-compose

我有一个依赖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服务的构建?

1 个答案:

答案 0 :(得分:1)

您可以使用ENTRYPOINTCMD来执行./gradlew test

发布您可以启动服务的信息- $ docker-compose up

这样,始终在Web服务的入口点或CMD执行之前启动redis服务。