第一步:云服务器安装docker
参考官方文档:https://docs.docker.com/engine/install/
我使用的是Centos 服务器,所以参考文档为:https://docs.docker.com/engine/install/centos/
第二步:修改docker配置
docker安装成功后,修改/usr/lib/systemd/system/docker.service 文件
修改ExecStart配置项内容为 ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
保存完成后执行
systemctl daemon-reload
service docker restart
第三步:IDEA安装Docker插件
第四步:配置IDEA docker
修改localhost为服务器外网IP地址
第五步:修改项目pom配置
修改pom配置,添加docker插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://localhost[服务器外网IP]:2375</dockerHost>
<imageName>xiqin/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<forceTags>true</forceTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
第六步:编写Dockerfile
在项目根目录下创建Dockerfile文件如下:
FROM hub.c.163.com/library/java:latest
VOLUME /tmp
ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
第七步:连接docker服务器,打包
点击package,即可完成本地打包并且根据Dockerfile配置往docker 所在服务器拉去对应的镜像文件并打包,初次处理时间会比较长,耐心等待打包结束
第八步:创建容器
连接好docker服务器后,IDEA中会有如下工具窗口显示
点击Images,选择刚刚创建的与项目名称对应的镜像进行创建容器,右键create container
在bind ports中配置容器与docker所在服务器端口映射
第九步:启动容器
点击docker 下的container,右键刚刚创建的容器名称,start container即可,在docker 的log窗口中可以看到与本地应用启动时一样的日志,此时即可访问远程服务器启动的应用
注意:在启动docker 容器的时候出现如下问题:
exec: "docker-proxy": executable file not found in $PATH
Error response from daemon: shim error: docker-runc not installed on system
此处网上搜到解决方案:
cd /usr/libexec/docker/
ln -s docker-proxy-current /usr/bin/proxy
ln -s docker-runc-current docker-runc
到此已经完成IDEA一键部署项目到云服务器docker中,记录步骤为后期使用
参考博客:http://www.javaboy.org/2019/0819/springboot-docker.html