簡體   English   中英

Docker-Compose - 控制 docker-compose 執行順序

[英]Docker-Compose - Control docker-compose execution order

我需要控制 Docker 容器實例化的順序,問題是我想用 Docker maven 容器構建一個 Jar 文件,然后將該 jar 傳遞給 OpenJDK Docker 容器以構建一個鏡像,然后實例化一個 MongoDB 容器和一個帶有之前生成的 OpenJDK 映像的 Java-App 容器通過 docker-compose 在它們之間進行通信。

問題是構建總是失敗,因為某些單元測試在初始化之前與數據庫對話,並且由於測試失敗,構建也會失敗。

這是我的 dockerfile:

FROM maven:3.5-alpine
COPY ./ /app
RUN cd /app && mvn package

FROM openjdk:8
COPY spring-rest-iw-exam.jar /tmp/spring-rest-iw-exam.jar
EXPOSE 8087
ENTRYPOINT ["java", "-jar", "/tmp/spring-rest-iw-exam.jar"]

這是我的 Docker-Compose:

version: '2'
services:
  mongodb:
    image: mongo
    container_name: iw_exam_mongo
    restart: always
    ports:
    - "27017:27017"
    environment:
    - MONGO_INITDB_DATABASE=fizz_buzz_collection
    volumes:
    - /opt/iw-exam/data:/data/db
  spring-app:
    container_name: iw_exam_java_rest_api
    build: ./
    restart: always
    ports:
    - "8087:8087"
    depends_on:
    - mongodb

我嘗試使用depends_on 並使用工具調用dockerize 進行了一些其他測試,但沒有一個有效,maven 構建總是在docker-compose 甚至開始實例化mongodb 之前啟動。

這是項目的github倉庫: https : //github.com/dsalasboscan/exam

我需要先實例化 Mongodb,然后從 maven 構建和 java 圖像生成開始。

我以前遇到過類似的問題,想分享我的經驗。

基本上,我們需要等待一段時間以確保 mongodb 完全啟動,這是您可以利用的工具 它很容易使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM