1、IDEA安装Docker工具
2、Linux安装Docker并配置远程访问
一键安装:
curl -sSL https://get.daocloud.io/docker | sh
百度一个开启2375远程访问的博客开启一下。
系统开放2375端口
注意:此处Docker开启远程访问后是不需要密码的,自己开发可以这么干,但是正儿八经上线的时候需要配置安全访问的,这个百度一大把
3、IDEA中配置Docker地址
再点击OK。
右键Connect后即可连接上了。
4、新建项目测试
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.5.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.dh</groupId> <artifactId>demoxxx</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demoxxx</name> <description>测试的,没啥用,别在意</description> <properties> <java.version>1.8</java.version> <docker.image.prefix>demo</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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- 跳过单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>dh/${project.artifactId}</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定 Dockerfile 路径--> <dockerDirectory>${project.basedir}</dockerDirectory> <!--指定远程 docker api地址--> <dockerHost>http://192.168.199.11:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <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>
在根目录下创建Dockerfile:
#指定基础镜像,在其上进行定制 FROM java:8 #维护者信息 MAINTAINER dh <2366567504@qq.com> #这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层 VOLUME /tmp #复制上下文目录下的target/demo-1.0.0.jar 到容器里 ADD target/demoxxx-0.0.1-SNAPSHOT.jar demo-1.0.0.jar #声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务 EXPOSE 8080 #指定容器启动程序及参数 <ENTRYPOINT> "<CMD>" ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]
5、运行跑起来
当我们package的时候就会自动打包镜像:
然后你会发现顶部工具栏有个这个:
那么下次你需要部署的时候,先打包package,然后run这个,那么就会将最新打包的镜像运行了。例如你现在写好了代码,package打包,run,这就部署到线上Docker里了,然后你再修改了代码,再package,run,就又部署到线上Docker了。
注:Dockerfile线上请不要沿用示例的这个,你要配置很多东西,例如日志的数据卷等。