【容器----Docker】idea将SpringBoot程序构建Docker镜像

1.首先开启docker的2375端口监听

vim /usr/lib/systemd/system/docker.service

增加配置

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

然后重新加载docker.server文件并重启docker服务

systemctl daemon-reload
systemctl restart docker

2.配置Dockerfile配置文件

在项目/src/main下增加docker目录,并在该目录下新增Dockerfile文件

内容如下

FROM java:8

MAINTAINER Sunny [email protected]

VOLUME /tmp

ADD application-server.jar app.jar

RUN bash -c 'touch /app.jar'

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

EXPOSE 28011

ENTRYPOINT ["java", "-jar", "app.jar"]

注意:

  • VOLUME:指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

pom.xml增加配置

            <!-- Docker -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!-- 将插件绑定在某个phase执行 -->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!-- 用户只需执行mvn package ,就会自动执行mvn docker:build -->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 指定生成的镜像名 -->
                    <imageName>${docker.registry}/${project.build.finalName}</imageName>
                    <!-- 指定标签 -->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!-- 指定 Dockerfile 路径 -->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!-- 指定远程 docker api地址 -->
                    <dockerHost>http://47.92.145.192:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- jar包所在的路径此处配置的对应target目录 -->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的jar包,这里对应的是Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

注意:

  • imageName:如果要推送到私有镜像库,则前面要加上ip地址和端口
  • imageName:名称的格式只允许大小写字母、数字、以及中划线,否则报错InternalServerErrorException:http 500

3.执行maven clean package命令构建

package后docker就直接发布到了docker server上,使用命令

docker images

查看是否发布成功,然后通过docker push到私有镜像库即可

猜你喜欢

转载自blog.csdn.net/ningjiebing/article/details/91374285
今日推荐