簡體   English   中英

Docker –在docker容器中編譯maven項目並從那里運行

[英]Docker – Compile maven project inside docker container & run it from there

我跑的Vue和春季啟動,我需要創建項目docker-compose.yml文件運行mvn clean install生成.jar ,然后從另一個Dockerfile打造一個“新”的形象與說.jar內泊塢窗容器。

這是在mvn全新mvn clean install完成后需要運行的Dockerfile:

FROM java:8

ENV WKHTML_VERSION 0.12.4

# Builds the wkhtmltopdf download URL based on version numbers above
ENV DOWNLOAD_URL "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/${WKHTML_VERSION}/wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz"

RUN apt-get update && \
    apt-get install -y --no-install-recommends wget && \
    wget $DOWNLOAD_URL && \
    tar vxf wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz && \
    cp wkhtmltox/bin/wk* /usr/local/bin/ && \
    cp wkhtmltox/lib/* /usr/local/lib/ && \
    rm wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz

# @see https://spring.io/guides/gs/spring-boot-docker/
COPY   server/target/redo-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

因此,構建步驟必須是這樣的:

  • 安裝節點+ Maven /拉那些圖像
  • 安裝postgresql並提取該圖像
  • 運行mvn clean install並生成.jar
  • 從上述Dockerfile構建新映像並運行它

我是docker-compose新手,因此無法按正確的執行順序進行設置。

我需要執行此操作的原因是由於生產管道中沒有node or npm ,而運行完整的maven應用程序( Vue.jsSpring Boot應用程序)則需要使用node or npm ,這就是為什么需要從中進行編譯的原因在Docker容器中

如果有人能指出正確的方向,我將不勝感激,更不用說–這可能嗎?

通過編寫一個多步驟構建作為我的Dockerfile來解決。 我正在將node作為依賴項安裝在客戶端的pom.xml文件中。

# Install maven and copy project for compilation
FROM maven:latest as builder

COPY pom.xml /usr/local/pom.xml
COPY server /usr/local/server
COPY client /usr/local/client
WORKDIR /usr/local/

RUN mvn clean install


FROM openjdk:8
ENV WKHTML_VERSION 0.12.4
# Builds the wkhtmltopdf download URL based on version numbers above
ENV DOWNLOAD_URL "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/${WKHTML_VERSION}/wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz"

RUN apt-get update && \
    apt-get install -y --no-install-recommends wget && \
    wget $DOWNLOAD_URL && \
    tar vxf wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz && \
    cp wkhtmltox/bin/wk* /usr/local/bin/ && \
    cp wkhtmltox/lib/* /usr/local/lib/ && \
    rm wkhtmltox-${WKHTML_VERSION}_linux-generic-amd64.tar.xz

COPY   --from=builder /usr/local/redo/server/target/server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

暫無
暫無

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

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