使用 Docker 部署
测试能否使用 docker 启动
打包
mvn clean package -DskipTests -Pproduction
测试启动
docker run --name web-hello \
-dit -v $(pwd)/target:/app \
-p 8080:80 -w /app \
litongjava/jdk:8u211 \
/usr/java/jdk1.8.0_211/bin/java -jar tio-boot-web-hello-0.0.1-SNAPSHOT.jar --app.env=prod
注意$(pwd)/target 替换为你的目录 测试 curl http://localhost:8080
封装成镜像
Dockerfile
FROM litongjava/jdk:8u391-stable-slim
# Set the working directory in the container
WORKDIR /app
# Copy the jar file into the container
COPY target/tio-boot-web-hello-1.0.0.jar /app/
# Command to run the jar file
ENTRYPOINT ["java", "-jar", "tio-boot-web-hello-1.0.0.jar"]
docker build -t litongjava/tio-boot-web-hello .
docker run -dit --restart=always --net=host --name=tio-boot-web-hello litongjava/tio-boot-web-hello
使用 ENTRYPOINT
FROM litongjava/jdk:8u391-stable-slim
# Set the working directory in the container
WORKDIR /app
# Copy the jar file into the container
COPY target/tio-boot-web-hello-1.0.0.jar /app/
# Command to run the jar file with support for JAVA_OPTS
ENTRYPOINT ["java", "-jar", "tio-boot-web-hello-1.0.0.jar"]
使用--app.env 指定环境
docker run -d --net=host --nametio-boot-web-hello -v $(pwd)/logs:/app/logs -e TZ=Asia/Shanghai -e LANG=C.UTF-8 boot-web-hello:latest --app.env=prod
这里推荐推荐笔者封装的镜像,推荐使用 litongjava/jdk:8u391-stable-slim,当然你还有下面的选择
- litongjava/jre:8u391-stable-slim 352MB
- litongjava/jdk:8u391-stable-slim 437MB
- litongjava/jdk:8u411-stable-slim 458MB
- litongjava/jdk:8u211 549MB
builder and runner
构建镜像使用一个 docker 容器,启动镜像使用另一个 docker 容器
FROM litongjava/maven:3.8.8-jdk8u391 AS builder
WORKDIR /app
COPY pom.xml pom.xml
RUN mvn dependency:go-offline
COPY src src
RUN mvn package -Passembly -q
RUN ls target
FROM litongjava/jre:8u391-stable-slim
WORKDIR /app
COPY /app/target/gpt-translator-backend-1.0.0.jar /app
EXPOSE 8080
CMD ["java", "-server", "-Xms1G", "-Xmx1G", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-Dpacket.handler.mode=queue1", "-jar", "/app/gpt-translator-backend-1.0.0.jar"]
中文支持 & 北京时区
启动镜像时添加两个环境变量 TZ and LANG
docker run -dit --name tio-boot-web-hello --restart=always --net=host \
-v $(pwd):/app -w /app \
-e TZ=Asia/Shanghai \
-e LANG=C.UTF-8 \
litongjava/jdk:8u391-stable-slim \
java -jar tio-boot-web-hello-0.0.1-SNAPSHOT.jar
binary
如果要使用二进制的方式启动,推荐移除 hotswap-classloader 依赖使用 TioApplication 启动应用,示例代码如下
TioApplication.run(HelloApp.class, args);
打包成二进制文件
mvn clean package -DskipTests -Pnative
运行二进制文件失败,不支持反射 测试失败,原因不不明
docker run --rm -p 8080:80 -v $(pwd)/target:/app debian /app/web-hello
测试失败,原因不明
docker run --rm -p 8080:80 -v $(pwd)/target:/app -e JAVA_HOME=/usr/java/jdk1.8.0_211 litongjava/jdk:8u211 /app/web-hello