赞
踩
项目源码网址:
https://gitee.com/shao_ming314/note/tree/master/%E8%84%9A%E6%89%8B%E6%9E%B6-%E7%9B%B4%E6%8E%A5%E7%94%A8/docker%E9%83%A8%E7%BD%B2springboot%E7%9A%843%E7%A7%8D%E6%96%B9%E5%BC%8F
本文参考网址:
https://mp.weixin.qq.com/s/k5gjh3YEMKYt70vvnGtqDg
创建一个springboot项目spring-boot-docker
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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.neo</groupId> <artifactId>spring-boot-docker</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>spring-boot-docker</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </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> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> <!-- 跳过单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> </project>
application.properties
server.port=8081
新建一个测试的controller
@Controller
public class HelloController {
@Value("${server.port}")
private String port;
@GetMapping("/")//get请求
@ResponseBody
public String hello() {
System.out.println("hello docker,该项目的端口好为:"+port);
return "hello docker,该项目的端口好为:"+port;
}
}
启动项目测试
不使用插件和idea
初始化项目目录如下
项目根目录执行命令:
mvn clean package
Dockfile
FROM java:8
VOLUME /tmp
ADD target/spring-boot-docker-1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
在项目根目录执行命令
docker build -t app .
使用docker命令:
# 查看镜像
docker images
# 运行容器
docker run --name myboot -p 8081:8081 -itd app
# 查看容器日志
docker logs -f myboot
启动项目测试
容器中的日志如下
在项目的/src/main目录下新建docker文件夹,在里面添加dockerfile文件
文件内容如下:
Dockerfile
FROM java:8
COPY *.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
修改后:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.neo</groupId> <artifactId>spring-boot-docker</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>spring-boot-docker</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <docker.image.prefix>springboot</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> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- Docker maven plugin --> </plugins> </build> </project>
使用mavne的docker插件构建镜像
mvn package docker:build
使用docker命令:
# 查看镜像
docker images
# 运行容器
docker run --name myboot -p 8081:8081 -itd springboot/spring-boot-docker
# 查看容器日志
docker logs -f myboot
启动项目测试
容器中的日志如下
修改docker的/usr/lib/systemd/system/docker.service配置文件
vim /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
配置完成后,保存退出,然后重启 Docker:
(一定要重启,否则会不生效)
systemctl daemon-reload
service docker restart
Docker 重启成功之后,Docker 的准备工作就算是 OK 了。
测试是否可以远程访问:宿主机浏览器访问 ip:2375/version
出现如上信息,证明docker开启远程访问成功
IDEA 上的准备工作,主要是安装一个 Docker 插件,点击 File->Settings->Plugins->Browse Repositories 如下:
说明:
新版本的idea都是内置了docker插件
配置docker连接信息
配置docker加速镜像地址
FROM java:8
VOLUME /tmp
ADD target/spring-boot-docker.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
配置好的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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.neo</groupId> <artifactId>spring-boot-docker</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>spring-boot-docker</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </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> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> <!-- 跳过单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--配置docker的连接信息--> <dockerHost>http://192.168.66.78:2375</dockerHost> <!-- 配置镜像的名称 --> <imageName>shaoming/${project.artifactId}</imageName> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> <!--build 时强制覆盖 tag,配合 imageTags 使用--> <forceTags>true</forceTags> <!-- 指定 Dockerfile 路径--> <dockerDirectory>${project.basedir}</dockerDirectory> <resources> <!-- 这里是复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中 --> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> </project>
接下来对项目进行打包,打包完成后,项目会自动构建成一个镜像,并且上传到 Docker 容器中,打包方式如下:
打包过程会稍微有一点旧,因为还包含了镜像的构建,特别是第一次打包,需要下载基础镜像,会更慢一些。
部分打包日志如下(项目构建过程):
项目打包成功之后,我们就可以在 Docker 容器中看到我们刚刚打包成的镜像了,如下:
使用docker命令:
# 查看镜像
docker images
# 运行容器
docker run --name myboot -p 8081:8081 -itd shaoming/spring-boot-docker:latest
# 查看容器日志
docker logs -f myboot
此时我们的 IDEA 中多了一个选项,就是 docker,如下:
说明:
每个idea版本都有差异,所以docker插件配置可能也有差异
点击左边的绿色启动按钮,连接上 Docker 容器,连接成功之后,我们就可以看到目前 Docker 中的所有容器和镜像了,当然也包括我们刚刚创建的 Docker 镜像,如下:
右键创建容器
配置容器的相关信息
启动项目测试
容器中的日志如下
est
docker logs -f myboot
#### **6.2** **运行方式二** 此时我们的 IDEA 中多了一个选项,就是 docker,如下: 说明: > 每个idea版本都有差异,所以docker插件配置可能也有差异 [外链图片转存中...(img-fPHxV1xX-1618906137998)] 点击左边的绿色启动按钮,连接上 Docker 容器,连接成功之后,我们就可以看到目前 Docker 中的所有容器和镜像了,当然也包括我们刚刚创建的 Docker 镜像,如下: [外链图片转存中...(img-NbuiowF5-1618906137999)] 右键创建容器 [外链图片转存中...(img-bfQfDubr-1618906138000)] 配置容器的相关信息 [外链图片转存中...(img-yI2bvduJ-1618906138001)] ### 7.测试访问 启动项目测试 [外链图片转存中...(img-z5IzRv7s-1618906138002)] 容器中的日志如下 ![image-20210420150848518](https://img-blog.csdnimg.cn/img_convert/8da294d36fe8d38db372a485ccc00ef4.png)
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。