idea使用插件远程linux打包docker镜像(点两下直接打包启动好)
idea使用远程linux打包docker镜像(点两下直接打包启动好)文章目录idea使用远程linux打包docker镜像(点两下直接打包启动好)一、首先准备好linux的docker环境二、Idea插件准备1.配置到docker的远程源2.加启动配置三、进入打包环节1.写dockerfile2.maven打好jar包3.使用刚配置到的docker启动,打包成docker镜像并启动4.简单测下接
idea使用远程linux打包docker镜像(点两下直接打包启动好)
文章目录
win下直接打包docker镜像需要安装docker的win版,我本机有虚拟机,安装docker发现有问题,找了找看是啥问题,结果说是要卸载虚拟机,淦,虚拟机比docker重要所以我决定不安装win版docker
远程指云服务器或虚拟机,总之不在同一系统环境下的。
一、首先准备好linux的docker环境
1.执行 yum install -y yum-utils 安装仓库管理工具
2.执行 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 执行阿里的镜像库
3.执行yum list docker-ce --showduplicates | sort -r 查看docker的版本有哪些
4.选择其中一个版本安装
yum install docker-ce-17.12.1.ce -y 这里我选择了相对老一点的版本17.12.1
5.修改docker配置开放远程访问
vim /usr/lib/systemd/system/docker.service
# 然后添加下面配置
-H unix://var/run/docker.sock -H tcp://0.0.0.0:2375
# 重新启动
systemctl daemon-reload
systemctl restart docker
#测试是否能连通 ip换成自己的,如果是云ECS服务器需要开放对应端口2375
curl http://192.168.0.177:2375/info
6.docker的几个常用命令
#启动docker
systemctl start docker
#重启docker
systemctl restart docker
#停止docker
systemctl stop docker
#查看docker下的镜像
docker images
#查看docker正在运行的容器
docker ps
#查看docker所有容器
docker ps -a
#删除一个镜像的步骤 1.先查容器然后删除容器 2.再根据IMAGE ID删除镜像
#删除容器
docker rm 对应要删除的容器的CONTAINER ID
#删除镜像
docker rmi 对应要删除的镜像的IMAGE ID
二、Idea插件准备
1.配置到docker的远程源
Engine API URL: 这个地方填tcp://对应的docker远程连接地址加端口号
下面出现 Connection successful 就说明是远程连接docker成功了
2.加启动配置
三、进入打包环节
1.写dockerfile
与pom文件同目录下新建一个dockerfile
#指定基础镜像,springboot项目打包docker一般就是jdk或者jre
FROM adoptopenjdk/openjdk11:jre11u-nightly
VOLUME /tmp
#设置编译镜像时加⼊的参数,JAR_FILE 是设置容器的环境变量(maven⾥⾯配置的)
ARG JAR_FILE
#将本地文件添加到容器中,不会自动解压文件,也不能访问网络资源
COPY target/1024-cloud-user.jar 1024-user.jar
#配置容器,使其可执行化。 我的理解就是拼接启动命令
ENTRYPOINT ["java","-jar","/1024-user.jar"]
#配置时区,不然会发现打包到docker中启动的容器日志里的时间是差8个小时的
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
2.maven打好jar包
pom文件中添加下面配置
<build>
<finalName>1024-cloud-user</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--需要加这个,不然打包镜像找不到启动文件-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
这个地方是两个父工程标签内容的引用,<docker.image.prefix>xdclass-cloud</docker.image.prefix>
这个是第一个引用,第二个是建工程的时候就会有的。
然后用maven clean 再 package一下就打好了jar包
3.使用刚配置到的docker启动,打包成docker镜像并启动
如果控制台打包失败且build的log如下:
Error response from daemon: COPY failed: stat /var/lib/docker/tmp/docker-builder618811564/1024-cloud-user.jar: no such file or directory
Failed to deploy '1024-user Dockerfile: xdclass-user-service/dockerfile': Can't retrieve image ID from build stream
说明他找不到刚用maven打好的jar,此时检查dockerfile中指定的jar包路径对不对
就是这里,需要是对应maven打好jar包的输出目录,改好就可以重新打包了(别忘了到images里面把刚才的废镜像删掉)
到这里就基本成功了,接下来就是看日志,和对应配置了。
4.简单测下接口看是否正常
返回结果和日志都正常显示说明没问题,今天为了找到在win下更简单打包docker镜像方法踩了一些坑,这是整理结果,今后就不用特别烦琐的把文件上传到linux中再打包了。
更多推荐
所有评论(0)