我正在構建多個服務的影像docker-compose.yml。例如,如果有 3 個服務 a、b 和 c 并且service a檔案夾中有更改,則將使用命令構建影像docker-compose a-service。但是,docker-compose.yml檔案中的服務是以一種為其提供構建背景關系的方式撰寫的。例如
services:
a-service:
container-name: a-service
build:
context: ./services/a
這是專案檔案結構
java-project/
├─ docker-compose.yml
├─ services/
│ ├─ a/
│ │ ├─ Dockerfile
│ │ ├─ pom.xml
│ ├─ b/
│ │ ├─ pom.xml
│ │ ├─ Dockerfile
├─ pom.xml
Dockerfile
#
# Build stage
#
FROM maven:3.6.3-jdk-11 as build
***fails at this steps****
RUN mvn clean install -DskipTests
#
# Package stage
#
FROM amazoncorretto:11-alpine-jdk
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
COPY src/main/resources/META-INF/xxx xxxx
ENTRYPOINT ["java","-jar","/app.jar"]
現在,當服務 a 被構建時,檔案夾中的Dockerfile存在service a被參考,并且檔案夾中的pom.xml存在也service a被參考。但是,我希望pom.xml專案根目錄中的存在作為映像創建程序的一部分被 maven 構建參考(maven 構建需要 pom.xml 來創建 jar 檔案。這些 jar 檔案將被復制到映像中) . 我嘗試了以下service a Dockerfile但仍然沒有運氣。知道如何實作這一目標嗎?
RUN cd ../../pom.xml
或者
RUN mkdir tmp-context
RUN cp -R ../../pom.xml tmp-context
或
COPY ../../pom.xml .
tldr - 我如何從一個子目錄中獲取根目錄中的專案內容Dockerfile
uj5u.com熱心網友回復:
您可以更改context并添加您dockerfile喜歡的位置:
services:
a-service:
container-name: a-service
build:
context: ./
dockerfile: ./services/a/Dockerfile
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/533197.html
上一篇:集裝箱港口映射概念混淆
