Dockerfile构建简单的微服务镜像

Dockerfile 构建简单的微服务项目镜像 + jdk docker 镜像

在日常,我们写好了一个微服务,如何把他做成一个镜像呢?有两种选择:

  • 第一种选择: 直接使用DockerMaven插件,这样做的优点呢,个人感觉肯定是快速又方便,但是感觉出错了又不好排查。
  • 第二种选择: 使用Dockerfile,这种虽然比上面的复杂了一些,但是出错可以排查,可以先测试jar包是否可用,在打成镜像,这样一般是可以直接用。不怎么会出错的。

我这次分享的就是如何利用Dockerfile来制作一个开发好的微服务镜像。如有需要。一定要有耐心看完。

一、 jdk1.8 镜像的制作

在制作微服务镜像之前,我们肯定是要准备一个jdk1.8的镜像的,原因肯定不用多说了,没有jdk的话,你的项目肯定是不可以运行的。那么jdk1.8肯定又依赖centos镜像的。

1.1 拉取contos7镜像

docker pull centos:7

1.2 上传jdk压缩包到linux

这个不用说,相信大家都会。  

上传结果如下:
上传结果

1.3 编写Dockerfile 并上传

#依赖镜像名称和ID(切记,跟你宿主机上centos镜像的名称一样,不要复制我的)
FROM docker.io/centos:7
#指定镜像创建者信息(随便写)
MAINTAINER IMMORT
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
#(切记第一个jdk... 是你jdk文件的名字。不要复制我的,根据实际情况)
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

上传结果图 在上面 dockerfile 与jdk 在同一个目录下

1.4 使用命令制作jdk1.8镜像

docker build -t='jdk1.8' .
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
注意: 后面有一个点。此命令在dockerfile所在文件目录下运行。jdk1.8文件也放在此目录下。

1.5 结果

运行上面的命令之后的展示如下:

运行结果生成的镜像如下:
在这里插入图片描述

二、 微服务项目镜像的制作

2.1 准备微服务项目

我这里采用的项目是 配置中心 的项目来做演示。并不是使用eureka来做演示的。不过结果都一样。选用哪个并不是重点。
具体什么是配置中心, 相信大家都了解。说白了就是管理项目所用的配置文件的。这个用起来还是比较方便的。(配置文件是从gitee中获取的)

项目结构如下图:
项目结构图

2.2 项目模块打包

这里要特别说明一下。我们打包成jar包,一定是要配置maven插件的。打包无法运行。

插件:

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

打包命令,直接上截图了:打包命令

2.3 测试jar包是否可运行

这里使用java -jar 运行jar包即可

在这里插入图片描述

浏览器访问测试jar包是否可以使用,如果可以使用,则你打成docker 镜像也差不多肯定是可以使用的。那么从下图我们可以看到,已经拿到配置文件了。那么我们可以确信,jar包可以使用,则打成镜像基本肯定也是没有问题的。

在这里插入图片描述

2.4 上传到linux。编写Dockerfile

上传,相信大家都会,那么Dockerfile 文件内容如下:

# 依赖镜像名称和ID
FROM jdk1.8
ADD app.jar /app.jar
# 暴露的端口
EXPOSE 1300
# RUN:用于执行后面跟着的命令行命令。
RUN bash -c 'touch /app.jar'
# CMD 指令允许用户指定容器的默认执行的命令。此命令会在容器启动且 docker run 没有指定其他命令时运行。
# 那么说白了,就是容器一启动,那么会自动使用java -jar 命令启动项目。
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

上传后的目录结构如下(与上面的jdk1.8的结构一样):

在这里插入图片描述

2.5 使用docker命令创建镜像

docker build -t='microservice_config' .

注意事项同上。创建过程如图
在这里插入图片描述
创建完成完成的镜像如图
在这里插入图片描述

2.6 项目运行测试(大功告成~)

使用命令运行:

docker run -di --name=config -p 13000:13000 microservice_config

浏览器运行测试如图:
在这里插入图片描述

总结。

其实这个并不难,大家有耐心一步一步的操作是没有问题的。有机会共同学习!!!!

猜你喜欢

转载自blog.csdn.net/weixin_42041788/article/details/103745894