From b86b55cafa956dca2b54ca29bfb386b9db155cd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B3=89?= Date: Tue, 29 Mar 2022 19:26:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Docker=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 编译命令 ``` docker buildx build . --build-arg PORT=9216 --build-arg PLATFORM=payment -t jeepay-payment:latest ``` ``` docker buildx build . --build-arg PORT=9217 --build-arg PLATFORM=manager -t jeepay-manager:latest ``` ``` docker buildx build . --build-arg PORT=9218 --build-arg PLATFORM=merchant -t jeepay-merchant:latest ``` 如果你需要多平台镜像,你可以使用 `--platform linux/amd64,linux/arm64` ``` docker buildx build . --build-arg PORT=9218 --build-arg PLATFORM=merchant -t jeepay-merchant:latest --platform linux/amd64,linux/arm64 ``` 启动命令 ``` docker run -d -p 9216:9216 jeepay-payment:latest ``` ``` docker run -d -p 9217:9217 jeepay-manager:latest ``` ``` docker run -d -p 9218:9218 jeepay-merchant:latest ``` ## Docker Compose 一次性运行所有环境 由于每个人的环境都不太一样,这里没有添加到项目内,可以放到文档里作为 demo ``` version: '3' services: mysql: hostname: mysql container_name: mysql # image: mysql:8 image: mysql/mysql-server:latest ports: - '3306:3306' environment: MYSQL_ROOT_PASSWORD: 'root' MYSQL_DATABASE: 'jeepay' volumes: - './data/mysql:/var/lib/mysql' - './data/mysql/conf.d:/etc/mysql/conf.d' - './data/mysql/log:/var/log/mysql' - './data/mysql/data:/var/lib/mysql/data' - './docs/sql/init.sql:/workspace/init.sql' # activemq 并没有官方维护的 Docker 镜像这里不推荐使用。 # activemq: # container_name: activemq # image: activemq:5.15.3 # ports: # - '61616:61616' # - '8161:8161' # environment: # ACTIVEMQ_USER: 'admin' # ACTIVEMQ_PASSWORD: 'admin' # rocketmq 配置 https://github.com/apache/rocketmq-docker # rabbitmq: # hostname: rabbitmq # container_name: rabbitmq # image: rabbitmq:latest # ports: # - "15672:15672" # - "4369:4369" # - "5672:5672" # - "25672:25672" # environment: # RABBITMQ_DEFAULT_USER: 'admin' # RABBITMQ_DEFAULT_PASS: 'admin' # RABBITMQ_DEFAULT_VHOST: 'jeepay' # volumes: # - './data/rabbitmq:/var/lib/rabbitmq' # - './data/rabbitmq/conf:/etc/rabbitmq' # - './data/rabbitmq/log:/var/log/rabbitmq' # - './data/rabbitmq/data:/var/lib/rabbitmq/data' payment: build: context: . dockerfile: Dockerfile args: PORT: 9216 PLATFORM: payment image: jeepay_payment:latest hostname: payment container_name: jeepay-payment ports: - "9216:9216" depends_on: - mysql # - rabbitmq manager: build: context: . dockerfile: Dockerfile args: PORT: 9217 PLATFORM: manager image: jeepay_manager:latest hostname: manager container_name: jeepay-manager ports: - "9217:9217" depends_on: - mysql # - rabbitmq merchant: build: context: . dockerfile: Dockerfile args: PORT: 9218 PLATFORM: merchant image: jeepay_merchant:latest hostname: merchant container_name: jeepay-merchant ports: - "9218:9218" depends_on: - mysql # - rabbitmq ``` --- Dockerfile | 42 ++++++++++++++++++++++++++++++++++++++++++ docs/Dockerfile | 5 +++++ 2 files changed, 47 insertions(+) create mode 100644 Dockerfile create mode 100644 docs/Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..33592e2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# syntax = docker/dockerfile:experimental +# 使用了 Docker 特性 Buildx 请开启相关特性 + +# 切换 JDK 请修改后面的 17 到对应版本 +# docker build -t jeepay-deps:latest -f docs/Dockerfile . + +# 编译依赖缓存,请先执行上方命令 +FROM jeepay-deps:latest AS builder + +WORKDIR /workspace + +COPY . /workspace + +RUN mvn clean package -Dmaven.test.skip=true -Ptest + + +# 以下为运行容器 切换 JDK 请修改后面的 17 到对应版本 +FROM mcr.microsoft.com/java/jre:17-zulu-alpine + +ARG PLATFORM=$PLATFORM + +WORKDIR /workspace + +COPY --from=builder /workspace/jeepay-${PLATFORM}/target/jeepay-${PLATFORM}.jar /workspace/jeepay-app.jar +COPY --from=builder /workspace/conf/${PLATFORM}/application.yml /workspace/application.yml + +EXPOSE $PORT + +CMD ["java", "-jar", "/workspace/jeepay-app.jar"] + +# 编译命令 +# docker buildx build . --build-arg PORT=9216 --build-arg PLATFORM=payment -t jeepay-payment:latest +# docker buildx build . --build-arg PORT=9217 --build-arg PLATFORM=manager -t jeepay-manager:latest +# docker buildx build . --build-arg PORT=9218 --build-arg PLATFORM=merchant -t jeepay-merchant:latest +# +# 如果你需要多平台镜像,你可以使用 --platform linux/amd64,linux/arm64 +# 比如 docker buildx build . --build-arg PORT=9218 --build-arg PLATFORM=merchant -t jeepay-merchant:latest --platform linux/amd64,linux/arm64 +# +# 启动命令 +# docker run -d -p 9216:9216 jeepay-payment:latest +# docker run -d -p 9217:9217 jeepay-manager:latest +# docker run -d -p 9218:9218 jeepay-merchant:latest \ No newline at end of file diff --git a/docs/Dockerfile b/docs/Dockerfile new file mode 100644 index 0000000..9577b13 --- /dev/null +++ b/docs/Dockerfile @@ -0,0 +1,5 @@ +FROM maven:3-eclipse-temurin-17 + +WORKDIR /build +COPY . . +RUN mvn dependency:go-offline \ No newline at end of file