springboot应用打包部署到docker运行

打包SpringCloud镜像并上传私有仓库并部署

1、步骤:maven里面添加配置pom.xml
        
         <properties>
           <docker.image.prefix>xdclass</docker.image.prefix>
        </properties>

        <build>
            <finalName>docker-demo</finalName>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.3.6</version>
                    <configuration>
                        <repository>${docker.image.prefix}/${project.artifactId}</repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>

  配置讲解
        Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
        ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

1、创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)
                什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

                FROM openjdk:8-jdk-alpine
                VOLUME /tmp
                ARG JAR_FILE
                COPY ${JAR_FILE} app.jar
                ENTRYPOINT ["java","-jar","/app.jar"]


                参数讲解:
                FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
                
                VOLUME  配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 

                ARG  设置编译镜像时加入的参数, ENV 是设置容器的环境变量
                COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
                ENTRYPOINT 容器启动时执行的命令
                EXPOSE 8080 暴露镜像端口
            2、构建镜像
            mvn install dockerfile:build
            
            ============
            使用阿里云私有镜像仓库
            1)登录: docker login [email protected] registry.cn-shenzhen.aliyuncs.com
            
            2) 推送本地镜像:
            docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[镜像版本号]
            例子:
            docker tag 2f415b0e9a6e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

            docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

            3)拉取镜像
                线上服务器拉取镜像:
                    docker login [email protected] registry.cn-shenzhen.aliyuncs.com

                    docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

                    启动容器:
                    docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e
                    
          ======================            
            
            打标签
            docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808
            推送到镜像仓库
            docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808

            应用服务器拉取镜像
            docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808


            docker run -d --name xdclass_docker_demo1 -p 8099:8080  a1b9fc71720d

            3、查看启动日志 docker logs -f  containerid
         
            文档:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/

猜你喜欢

转载自blog.csdn.net/peng_0129/article/details/84790191