idea中使用docker部署spring boot项目

开启docker远程访问

修改docker配置文件:

vi /lib/systemd/system/docker.service

找到ExecStart,将修改如下:

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375


[root@bluesky dc-redis]# vi /lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375  ## 改了这里

ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
...
重启docker服务

[root@bluesky dc-redis]# systemctl daemon-reload
[root@bluesky dc-redis]# service docker restart
Redirecting to /bin/systemctl restart docker.service
校验

curl http://localhost:2375/version

[root@bluesky dc-redis]# curl http://localhost:2375/version
{"Platform":{"Name":"Docker Engine - Community"}....

idea中布署boot

现有spring boot项目,项目结构:

boot-docker
    -> src
        -> main
        -> test
    -> Dockerfile
    -> pom.xml

注意Dockerfile的位置!!,和 src 同级

Dockerfile内容:

FROM jdk8:latest
VOLUME /tmp
COPY target/boot-docker.jar app.jar  # target/boot-docker.jar 的路径是相对于
									 # Dockerfile的位置,所以Dockerfile位置很重要!!
RUN sh -c 'touch /app.jar'
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

直接执行Dockerfile方式
连接Docker server

在这里插入图片描述
idea底部可以看到Docker的服务面板:

在这里插入图片描述

如果不能看到Docker服务面板,可以通过keymap中, 设置快捷键显示:

在这里插入图片描述

构建镜像,点击 Edit configuration:

在这里插入图片描述

在这里插入图片描述
直接运行,如果运行成功,可以在docker面板看到:

在这里插入图片描述

根据镜像创建容器:

在这里插入图片描述
在这里插入图片描述

使用docker-image-plugin插件方式

pom.xml中加入 plugin :


<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.0</version>

    <!--将插件绑定在某个phase执行-->
    <executions>
        <execution>
            <id>build-image</id>
            <!--将插件绑定在package这个phase上。也就是说,
            用户只需执行mvn package ,就会自动执行mvn docker:build-->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <!--指定生成的镜像名,这里是我们的项目名-->
        <imageName>${project.artifactId}</imageName>
        <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <!-- 指定我们项目中Dockerfile文件的路径-->
        <dockerDirectory>${project.basedir}/</dockerDirectory>

        <!--指定远程docker 地址-->
        <dockerHost>http://192.168.x.xx8:2375</dockerHost>

        <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--jar包所在的路径  此处配置的即对应项目中target目录-->
                <directory>${project.build.directory}</directory>
                <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

然后,在右侧点击package,就可以构建镜像了,其他的和上一种方式一样

Logo

一站式 AI 云服务平台

更多推荐