说明:下面用到的ip和加速地址我自己的,为了更清楚就没有打码,大家要换成自己的哦(✿◕‿◕✿)
1. 远程服务器安装docker
2. docker开启远程访问
- 在服务器控制台配置安全组,开启端口号
- 在Xshell中开启防火墙,开放端口号
- 开启docker远程访问
3. 为docker配置加速镜像
地址:https://cr.console.aliyun.com/cn-beijing/instances/mirrors
4. 在idea中设置docker
file->setting->Docker
file->setting->Docker->Registry
5. 在xsell中下载必要的镜像
tomcat
6. 在idea中启动镜像构建容器
- 注意:要将ImageID or name 改成镜像的id,为容器起名字,配置端口映射
7. 浏览器访问http://59.110.156.6:8080/
如果出现404,并且在xshell中执行curl 127.0.0.1:8080
,也是404
- 执行docker exec -it 48c58ce26899 /bin/bash ,进入容器的/usr/local/tomcat目录下
- 发现webapps是空的,本应该在webapps中的文件却放在了webapps.dist中
- 执行rmdir webapps,删除webapps,执行mv webapps.dist webapps将webapps.dist重命名为webapps
- 浏览器访问http://59.110.156.6:8080/ ,显示tomcat主页
8. docker集成maven插件
在项目的pom文件中加入如下配置,以便自动生成dockerfile
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称-->
<imageName>${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!--基础镜像-->
<baseImage>java</baseImage>
<!--制作者提供本人信息-->
<maintainer>Sadie zhangxueping21@foxmail.com</maintainer>
<!--切换到/docker目录-->
<workdir>/docker</workdir>
<!-- <cmd>["java","-version"]</cmd>-->
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<!--指定远程 docker api地址-->
<dockerHost>http://59.110.156.6:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/docker</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
9. 对项目进行打包,构建镜像到docker上
在项目的配置文件中设置项目端口号,如设为80
在idea中的Terminal执行 mvn clean package docker:bulid失败,maven嘣,maven恢复后用mvn clean package docker:build仍然无法访问,改成
mvn clean package dockerfile:build后成功
10. 启动容器
右击新创建的springboot镜像,创建容器,端口映射为-p 80:80
浏览器访问http://59.110.156.6/test 成功
11. 绑定docker命令到maven的各个阶段
在里加入如下配置
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
之后点击maven的package就可以一键构建