[英]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.