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

    DJOSIMON
  • 相关阅读:
    My97DatePicker控件显示时分秒
    【servlet学习1】使用eclipse+tomcat开发servlet示例
    JNI之JAVA调用C++接口
    关闭页面,window.onunload事件未执行的原因
    java finally块执行时机分析
    c# IL 指令集
    java 字节码指令集
    Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
    常用的Linux可插拔认证模块(PAM)应用举例(一)
    开始我的博客旅途
  • 原文地址:https://www.cnblogs.com/DJOSIMON/p/14888546.html
Copyright © 2020-2023  润新知