一、准备 dockerfile 文件
在一个目录下创建一个名为 dockerfile 的文件:
docker vim dockerfile
添加以下内容,注释有构建镜像时的指令说明,仅供参考,根据实际项目而定
#基础镜像,jdk11环境,有adoptopenjdk/openjdk8
FROM adoptopenjdk/openjdk11
#作者
MAINTAINER Jungle
#创建目录
RUN mkdir "/jar"
RUN mkdir -p /smart/server
RUN mkdir -p /smart/server/logs
RUN mkdir -p /smart/server/temp
#项目的工作目录
WORKDIR /smart/server
#将主机上当前目录下的jar目录中的 所有.jar 文件复制到 Docker 镜像内部的 /jar 目录中
ADD ./*.jar /jar/
#设置环境变量
ENV SERVER_PORT=8088
# 设置镜像暴露端口
EXPOSE ${SERVER_PORT}
# 使用CMD来启动Java程序
CMD java -jar -Djava.security.egd=file:/dev/./urandom /jar/*.jar
Dockerfile 支持以下说明:
指令 | 描述 |
---|---|
ADD | 添加本地或远程文件和目录。 |
ARG | 使用构建时变量。 |
CMD | 指定默认命令。 |
COPY | 复制文件和目录。 |
ENTRYPOINT | 指定默认可执行文件。 |
ENV | 设置环境变量。 |
EXPOSE | 描述应用程序正在侦听的端口。 |
FROM | 从基础映像创建新的生成阶段。 |
HEALTHCHECK | 在启动时检查容器的运行状况。 |
LABEL | 向图像添加元数据。 |
MAINTAINER | 指定图像的作者。 |
ONBUILD | 指定在生成中使用映像的说明。 |
RUN | 执行构建命令。 |
SHELL | 设置映像的默认 shell。 |
STOPSIGNAL | 指定退出容器的系统调用信号。 |
USER | 设置用户和组 ID。 |
VOLUME | 创建卷装载。 |
WORKDIR | 更改工作目录。 |
二、后端服务打包
在当前目录下创建jar目录,maven打包,将所有jar包上传至服务器的当前目录下的jar目录中
三、构建镜像
注意有一个 点 . 表示dockerfile文件在当前目录下
#-t指定镜像名为jungle/env_jdk11,版本标签为jdk11
# . 指明dockerfile文件在当前目录下
docker build -t jungle/spring_server:jdk11 .
四、运行容器
docker命令行运行容器
docker run -d
--name server \
-p 8088:8088 \
-v ./jar:/jar \
jungle/spring_server:jdk11
docker-compose 后台运行容器
docker-compose.yml文件内容:
version: "3"
services:
smart-server:
image:jungle/spring_server:jdk11
container_name: server
restart: always
# mem_limit: 1024m
ports:
- "8088:8088"
environment:
server.port: 8088
# 应用的访问路径
server.servlet.context-path: /
spring.profiles.active: prod
#JVM_OPTS: -Xmx512m -Xms512m
# 时区上海
TZ: Asia/Shanghai
volumes:
- ./jar:/jar
command: ["java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "/jar/smart-plus.jar"]
启动容器
docker-compose up -d
四、推送镜像至dockerhub
推送镜像到 https://hub.docker.com/repository docker-hub镜像厂库,,dockerhub中不用创建厂库,推送镜像会自动根据镜像名创建厂库
#登录docker-hub
docker login
#然后输入用户名和密码
登录成功如下
#为镜像打上标签(修改),若不想修改可直接使用 原来的,06b1e7f280ae 是镜像ID
docker tag 06b1e7f280ae glacierj/ry-exploit-jdk11:4.3.1
#推送到镜像厂库
docker push glacierj/ry-exploit-jdk11:4.3.1
拉取镜像验证
docker pull glacierj/ry-exploit-jdk11:4.3.1