使用Dockerfile制作微服务镜像
JAR打包微服务
微服务POM文件添加Maven打包插件:
<!-- 微服务项目只需要在父POM添加以下插件即可,子工程均可使用。(添加完之后记得刷新) -->
<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork><!-- 如果没有该配置, devtools不会生效 -->
<addResources>true</addResources>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
# 终端进入微服务根目录,执行打包命令:
mvn clean package -D maven.test.skip=true
# 上传微服务Jar包到Linux
Dockerfile脚本文件
编写Dockerfile文件, 放在和Jar包同一级目录下。
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 7001
ENTRYPOINT ["java","-jar","/app.jar"]
构建微服务镜像
来到Dockerfile所在目录,执行以下命令:
docker build --build-arg JAR_FILE=cloud-eureka-server-7001.jar -t eureka7001:v2 .
--build-arg
:用于给参数赋值;JAR_FILE
:参数名;-t
:镜像名;.
:表示去哪里获取Dockerfile文件。
一切顺利的话将看到终端打印输出:
[root@dj-virtual-machine docker]# docker build --build-arg JAR_FILE=cloud-eureka-server-7001.jar -t eureka7001:v1 .
Sending build context to Docker daemon 51.12MB
Step 1/5 : FROM openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2/5 : ARG JAR_FILE
---> Using cache
---> 813362ca3f44
Step 3/5 : COPY ${JAR_FILE} app.jar
---> cc56edd858ec
Step 4/5 : EXPOSE 7001
---> Running in d792548cebc7
Removing intermediate container d792548cebc7
---> 3cc3a443c23a
Step 5/5 : ENTRYPOINT ["java","-jar","app.jar"]
---> Running in cafd1279f3b7
Removing intermediate container cafd1279f3b7
---> 1ba74a977b41
Successfully built 1ba74a977b41
Successfully tagged eureka7001:v1
[root@dj-virtual-machine docker]#
检验镜像是否构建完成:
[root@dj-virtual-machine docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eureka7001 v1 1ba74a977b41 12 minutes ago 156MB
检验镜像的可用性:
[root@dj-virtual-machine docker]# docker run -dit --name eureka -p 7001:7001 eureka7001:v1
7818d6bc569c07a41c463da9c13d6b4b55da0083d67e5fbd16b06435183b6027
-d
:后台运行容器,并返回容器ID;-i
:以交互模式运行容器,通常与 -t 同时使用;-t
:为容器重新分配一个伪输入终端,通常与 -i 同时使用;--name
:为容器指定一个名称;-p
:随机端口映射,容器内部端口 随机 映射到主机的端口。
[root@dj-virtual-machine docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7818d6bc569c eureka7001:v1 "java -jar app.jar" About a minute ago Up About a minute 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp eureka
# 查看容器日志
[root@dj-virtual-machine docker]# docker logs -f 7818d6bc569c
外部访问微服务
windows下浏览器访问:http://centos7:7001/ 或者 http://192.168.8.150:7001/
可看见微服务启动成功
DJOSIMON