idea maven构建后把项目打包成镜像

Dockerfile

# 基础镜像
FROM openjdk:21
# 维护人
LABEL maintainer="shenchen<17786925624@163.com>"
# 创建目录
RUN mkdir -p /data/app
#指定挂载目录
VOLUME /data
# 拷贝项目jar
COPY target/*.jar /data/app/tk-platform.jar
# 设置时区
ENV TZ=Asia/Shanghai
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/data/app/tk-platform.jar"]
CMD ["--spring.profiles.active=pro"]

# 暴露端口
EXPOSE 8888

maven

<plugin>
      <groupId>com.spotify</groupId>
      <artifactId>dockerfile-maven-plugin</artifactId>
      <version>1.4.13</version>
      <executions>
          <execution>
              <id>default</id>
              <goals>
                  <goal>build</goal>
              </goals>
          </execution>
      </executions>
      <configuration>
          <repository>${project.artifactId}</repository>
          <tag>${project.version}</tag>
          <buildArgs>
              <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
          </buildArgs>
      </configuration>
  </plugin>

repository : 镜像名称 tag: 镜像版本号

JAR_FILE: 构建时 jar 的路径

docker 运行模板

Docker 镜像.run.xml

<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="Docker 镜像" type="docker-deploy" factoryName="docker-image" server-name="Docker">
    <deployment type="docker-image">
      <settings>
        <option name="imageTag" value="tk-platform-1.0.2" />
        <option name="containerName" value="tk-platform" />
        <option name="portBindings">
          <list>
            <DockerPortBindingImpl>
              <option name="containerPort" value="8888" />
              <option name="hostIp" value="10.30.10.21" />
              <option name="hostPort" value="8888" />
            </DockerPortBindingImpl>
          </list>
        </option>
        <option name="pullImage" value="NEVER" />
        <option name="commandLineOptions" value="-d --privileged=true --restart=always" />
        <option name="showCommandPreview" value="true" />
        <option name="volumeBindings">
          <list>
            <DockerVolumeBindingImpl>
              <option name="containerPath" value="/logs" />
              <option name="hostPath" value="/data/logs" />
            </DockerVolumeBindingImpl>
          </list>
        </option>
      </settings>
    </deployment>
    <method v="2" />
  </configuration>
</component>

常见问题

https://www.cnblogs.com/mn609/articles/16932410.html

错误1:
Caused by: com.spotify.docker.client.shaded.org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect

解决方案:
在开发环境中配置环境变量【计算机 - 属性 - 高级系统设置】
系统变量中增加如下配置【可能需要重启电脑】 

变量名:DOCKER_HOST 
变量值:tcp://192.168.75.129:2375 【就是前面配置的docker服务的Engine API URL】
错误2 
Error response from daemon: Cannot start container eb9d501f56bc142d9bf75ddfc7ad88383b7388ca6a5959309af2165f1fff6292: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 
重启 dockcer
systemctl restart docker 
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值