JAR打包微服务 微服务POM文件添加Maven打包插件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <build > <finalName > ${artifactId}</finalName > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <configuration > <fork > true</fork > <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包同一级目录下。
1 2 3 4 5 FROM openjdk:8 -jdk-alpineARG JAR_FILECOPY ${JAR_FILE} app.jar EXPOSE 7001 ENTRYPOINT ["java" ,"-jar" ,"/app.jar" ]
构建微服务镜像 来到Dockerfile所在目录,执行以下命令:
1 docker build --build-arg JAR_FILE=cloud-eureka-server-7001.jar -t eureka7001:v2 .
--build-arg
:用于给参数赋值;
JAR_FILE
:参数名;
-t
:镜像名;
.
:表示去哪里获取Dockerfile文件。
一切顺利的话将看到终端打印输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [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]#
检验镜像是否构建完成:
1 2 3 [root@dj-virtual-machine docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE eureka7001 v1 1ba74a977b41 12 minutes ago 156MB
检验镜像的可用性:
1 2 [root@dj-virtual-machine docker]# docker run -dit --name eureka -p 7001:7001 eureka7001:v1 7818d6bc569c07a41c463da9c13d6b4b55da0083d67e5fbd16b06435183b6027
-d
:后台运行容器,并返回容器ID;
-i
:以交互模式运行容器,通常与 -t 同时使用;
-t
:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name
:为容器指定一个名称;
-p
:随机端口映射,容器内部端口 随机 映射到主机的端口。
1 2 3 4 5 6 [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/
微服务启动成功