Loading

使用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/

可看见微服务启动成功

image-20210616105731982

posted @ 2021-06-16 11:02  溫柔の風  阅读(254)  评论(0编辑  收藏  举报