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