idea集成docker实现远程部署
一、使用步骤
1.设置docker.service配置文件
vim / lib/ systemd/ system/ docker. service
[ Service ]
Type = notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
#ExecStart = / usr/ bin/ dockerd - H fd: / / -- containerd= / run/ containerd/ containerd. sock
ExecStart = / usr/ bin/ dockerd - H tcp: / / 0.0 .0 .0 : 2375 - H unix: /
ExecReload = / bin/ kill - s HUP $MAINPID
TimeoutSec = 0
RestartSec = 2
Restart = always
2.重新加载配置文件并重启docker
systemctl daemon- reload && systemctl restart docker
3.下载docker插件
4.配置idea的docker远程连接
5.配置pom.xml文件
< ? xml version= "1.0" encoding= "UTF-8" ? >
< project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns: xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion> 4.0 .0 < / modelVersion>
< parent>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- parent< / artifactId>
< version> 2.6 .3 < / version>
< relativePath/ > < ! -- lookup parent from repository -- >
< / parent>
< groupId> com. example< / groupId>
< artifactId> docker< / artifactId>
< version> 0.0 .1 - SNAPSHOT< / version>
< name> docker< / name>
< description> Demo project for Spring Boot < / description>
< properties>
< java. version> 1.8 < / java. version>
< docker. image. prefix> docker< / docker. image. prefix>
< / properties>
< dependencies>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- web< / artifactId>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- test< / artifactId>
< scope> test< / scope>
< / dependency>
< / dependencies>
< ! -- 打jar包插件-- >
< build>
< plugins>
< plugin>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- maven- plugin< / artifactId>
< configuration>
< fork> true < / fork>
< addResources> true < / addResources>
< ! -- 主启动类-- >
< mainClass> com. example. docker. DockerApplication< / mainClass>
< / configuration>
< executions>
< execution>
< goals>
< goal> repackage< / goal>
< / goals>
< / execution>
< / executions>
< / plugin>
< plugin>
< ! -- 安装docker插件-- >
< groupId> com. spotify< / groupId>
< artifactId> docker- maven- plugin< / artifactId>
< version> 1.0 .0 < / version>
< configuration>
< ! -- 远程连接地址-- >
< dockerHost> http: / / ip地址: 2375 < / dockerHost>
< ! -- 镜像名称-- >
< imageName> ${ docker. image. prefix} / ${ project. artifactId} < / imageName>
< ! -- dockerfile的位置-- >
< dockerDirectory> src/ main/ docker< / dockerDirectory>
< resources>
< resource>
< targetPath> / < / targetPath>
< ! -- jar 包所在的路径 此处配置的 即对应 target 目录-- >
< directory> ${ project. build. directory} < / directory>
< ! -- 需要包含的 jar包 ,这里对应的是 Dockerfile 中添加的文件名 -- >
< include> ${ project. build. finalName} . jar< / include>
< / resource>
< / resources>
< / configuration>
< / plugin>
< / plugins>
< / build>
< / project>
6.编写dockerfile
FROM java: 8
COPY * . jar / app. jar
CMD [ "--server.port=8080" ]
EXPOSE 8080
ENTRYPOINT [ "java" , "-jar" , "app.jar" ]
6.打包镜像并上传
7.部署容器
总结
服务器docker要开放2375端口,使用阿里云或腾讯云要设置防火墙过滤规则。