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

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

链接成功后
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YKenan/article/details/111446036
今日推荐