- 构建号SpringBoot项目,保证本地能够正常启动并访问;
- 通过Maven package命令打包项目成jar包
- 在宿主机建立目录, 并将jar包上传到宿主机中
4. 在jar包目录下编写Dockerfile文件
vim Dockerfile
# 继承 java:8 这个镜像
FROM java:8
# 作者
MAINTAINER bryan
# 设置当前生成的镜像工作目录
WORKDIR /app
# 环境变量设置
ENV TZ=Asia/Shanghai
# 时区写入系统文件
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 容器数据卷挂在
VOLUME /tmp
# 将宿主机中的jar包 copy到容器中 /app目录下, 并改名为 docker-server.jar
ADD docker-0.0.1-SNAPSHOT.jar /app/docker-server.jar
#
RUN bash -c 'touch /docker-server.jar'
# 容器启动后 执行命令 启动SpringBoot项目 java -jar xxx.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/docker-server.jar"]
# 暴露端口号
EXPOSE 8080
5. 创建镜像
# 别忘记了最后的.
docker build -t docker_server:1.0 .
- 镜像创建成功后 ,查看镜像, 启动容器
# 查看镜像是否创建成功
docker images
# 启动SpringBoot项目坐在的容器
docker run -d --name docker_server -p 8080:8080 docker_server:1.0
# 查看容器列表
docker ps -a
# 查看容器内日志, 理论上能看到SpringBoot启动成功
docker logs docker_server
- 访问项目 调用接口
curl 192.168.222.132:8080/first
附:
Dockerfile 参数详解
关键字 | 作用 |
---|---|
FROM | 当前镜像是基于哪个镜像 |
RUN | 构建镜像时需要的命令 在docker build 时执行 |
EXPOSE | 当前容器需要对外暴露的端口 |
WORKDIR | 指定在创建容器后,终端默认进入的工作目录,落脚点 |
ENV | 用来构建镜像过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像中,并且会自动处理URL和解压tar包 |
COPY | 类似于ADD拷贝文件到镜像中,将从构建上下文目录中<原路径>的文件/目录复制到新的一层镜像的<目标路径>位置 |
VOLUME | 容器数据卷,用于保存数据和持久化工作 |
CMD | 指定一个容器启动命令,Dockerfile中科院有多个CMD命令,但只有最后一个生效,CMD会被run之后的参数替换掉 |
ENTRYPOINT | 指定一个容器启动是要执行的命令 ,和CMD一样,但一般和CMD配合使用, ENTRYPOINT不会被docker run后面的命令覆盖, 而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序 |