IDEA 将 Jar 项目直接镜像形式部署到 Docker 中
1. 构建基础环境
构建一个含有 JDK 的基础环境.
新建一个 Dockerfile 文件.
# 镜像名称
FROM centos
# 运行命令
RUN yum install -y java-1.8.0-openjdk-devel.x86_64
运行
docker build -t centos8_1.8 .
运行完 docker 就会对一个 centos8_1.8 的镜像.
2. 构建私有仓库并测试上传
2.1 构建私有仓库
docker pull registry;
docker run -d -it -p 5000:5000 --name registry registry;
运行上面的命令后可以访问下面的 URL 进行查看自己的私有镜像.
http://IP:5000/v2/_catalog
私有仓库的地址信任.
/etc/docker/daemon.json 这个文件安装 Docker 的时候加快下载用的, 这里也用.
vim /etc/docker/daemon.json
# 添加的内容 IP 为服务器的 ip 地址
"insecure-registries": ["IP:5000"]
重启 Docker
systemctl restart docker;
docker start registry;
2.2 上传私有镜像
标记此镜像为私有镜像
# centos8_1.8 为镜像名称, 192.168.19.131:5000 为私有仓库 url, centos8_1.8 上传私有仓库后的名称
docker tag centos8_1.8 192.168.19.131:5000/centos8_1.8
上传标记的镜像
docker push 192.168.19.131:5000/centos8_1.8
浏览查看
3. 设置远程访问 Docker
修改配置
vim /lib/systemd/system/docker.service
添加内容:
ExecStart
后面添加下面的内容, 端口号为2375
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启 Docker
systemctl daemon-reload;
systemctl restart docker;
docker start registry;
4. Maven 中的配置
imageName, baseImage, dockerHost
只需要改动这三个标签即可.
<!-- Docker镜像构建 mvn docker:build https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- Dockerfile文件位置 -->
<!--<dockerDirectory>${project.basedir}</dockerDirectory>-->
<!-- 镜像仓库:版本 -->
<imageName>192.168.19.131:5000/${project.artifactId}:${project.version}</imageName>
<!-- 基础镜像 -->
<baseImage>centos8_1.8</baseImage>
<!-- 打成镜像 -->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- 强制覆盖 -->
<forceTags>true</forceTags>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- 资源 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 主机 -->
<dockerHost>http://192.168.19.131:2375</dockerHost>
<!-- 上传仓库认证 需要在Maven setting.xml中配置 -->
<!--<serverId>docker-ali</serverId>
<registryUrl>registry.cn-shanghai.aliyuncs.com</registryUrl>-->
</configuration>
</plugin>
在 Terminal 中运行下面的内容.
成功运行完就会在私有仓库中看见
mvn clean package docker:build -DpushImage
4.1 报错: JAVA_HOME should point to a JDK not a JRE
一般不会报错
在 Maven 目录 bin 目录下找到 mvn.cmd 文件在第一行添加下面的内容:
set JAVA_HOME=D:\Java\java1.8
4.2 报错: Failed to execute goal org.apache.,maven.plugins:maven-compiler-plugin:3.8.1
在 pom.xml 文件内添加下面的内容
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
4.3 报错: no main manifest attribute, in XXX.jar
docker logs xxx
docker 运行没有启动来查看, 是由于no main manifest attribute, in XXX1.0.0-SNAPSHOT.jar 错误, 在 pom.xml 文件内添加下面内容.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5. IDEA 可以链接 Docker
链接成功后