下面是Java应用打包成Docker镜像的完整攻略:
1. 准备工作
在开始之前,需要先确保已经安装好了Docker和Java开发环境。
2. 编写Dockerfile
Dockerfile是定义Docker镜像构建过程的脚本文件。创建一个名为Dockerfile的文件并编写如下内容:
FROM openjdk:8-jdk-alpine
ADD target/my-app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
说明:
- 使用了
openjdk
镜像作为基础镜像; - 将本地目录中的
target/my-app.jar
文件添加到镜像中,并重命名为app.jar
; - 暴露8080端口;
- 定义容器启动时执行的脚本。
3. 构建Docker镜像
在终端进入到Dockerfile所在目录,执行以下命令构建镜像:
docker build -t my-app .
此处的-t
参数为指定镜像名称和版本号,.
表示当前目录。
4. 运行Docker容器
执行以下命令启动Docker容器:
docker run -p 8080:8080 my-app
此处的-p
参数表示将容器内的8080端口映射到主机的8080端口。
示例1
以SpringBoot为例,也是目前比较流行的Java Web应用开发框架,假设我们已经有一个名为my-springboot-app的SpringBoot项目。针对该示例,需要在该项目根目录下新增Dockerfile文件,然后按照如下方式来编写Dockerfile:
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
解释:
- 准备openjdk 8基础镜像;
- 复制jar包到app.jar文件;
- 暴露8080端口;
- 配置容器启动命令。
然后执行以下命令构建镜像:
docker build -t my-springboot-app-img:latest .
接下来运行容器:
docker run -d -p 8080:8080 my-springboot-app-img:latest
示例2
针对Dubbo(华为基于Java的分布式服务框架)应用,需要给出一个实际示例,示例项目名为my-dubbo-app,也假设已经构建好了相应项目的可执行jar文件。首先在my-dubbo-app根目录下,创建一个名为Dockerfile的Dockerfile文件,并将下面的代码复制进去:
FROM java:8
MAINTAINER Tuling sun
COPY dubboService.jar app.jar
EXPOSE 20880
ENTRYPOINT ["java","-jar","/app.jar"]
接着执行以下命令构建镜像:
docker build -t my-dubbo-app-img:latest .
最后运行容器:
docker run -d -p 20880:20880 my-dubbo-app-img:latest
至此,我们就成功将Java应用打包成了Docker镜像,并成功运行了容器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java应用打包成Docker镜像 - Python技术站