Docker-fabric8
Docker-fabric8
1 说明
IDEA
通过 fabric8io/docker-maven-plugin
部署 MAVEN
项目到远程 Docker
环境。
2 环境
软件名称 | 版本 |
---|---|
Docker | 20.10.9 |
JDK | 8 |
MAVEN | 3.5.X |
fabric8io/docker-maven-plugin | 0.33.0 |
2.1 Docker 环境
2.1.1 Docker 宿主机配置
1. Docker 安装略。
2. Docker 配置。
vi /lib/systemd/system/docker.service
# 修改 ExecStart 字段
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 保存文件,更新修改
systemctl daemon-reload
# 重启docker服务
service docker restart
2.1.2 Win11: VMware Player 与 Device/Credential Guard 不兼容解决
Docker 下载,这里我使用的是 Window。 执行下面 2 个命令即可,注意重启后 VM 可以正常启动,但是 Docker 不能正常启动,不过我们 Window
也不使用 docker
容器,因此也没有影响。
- win + r -> services.msc -> 禁用 HV 主机服务。
- cmd(管理员) -> bcdedit /set hypervisorlaunchtype off -> 重启电脑
2.2 IDEA 配置 Docker
配置远程连接 Docker。
配置本地 Docker。
3 HelloWorld
3.1 使用 Spring Boot 新建一个 demo 应用
新建 dockerdemo
的应用,pom.xml
配置如下。主要配置了 docker-maven-plugin
打包插件,Docker
详细配置见 Dockerfile
文件。
<build>
<finalName>dockerdemo</finalName>
<plugins>
...
<!--maven docker 打包插件 -->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<configuration>
<dockerHost>http://192.168.37.200:2375</dockerHost>
<registry>192.168.37.200</registry>
<images>
<image>
<name>192.168.37.200/library/${project.name}:${project.version}</name>
<build>
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
<!-- 网络的配置,与宿主主机共端口号-->
<!-- <buildOptions>-->
<!-- <network>host</network>-->
<!-- </buildOptions>-->
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
application.yml
配置如下。
server:
port: 8088
spring:
application:
name: dockerdemo
3.2 新建 HelloWorld 测试接口
DemoApplication
如下。
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
// http://127.0.0.1:8088/helloWorld
// http://192.168.37.200:8088/helloWorld
@GetMapping("/helloWorld")
@ResponseBody
public Map<String, String> helloWorld() {
Map<String, String> map = new HashMap<>();
map.put("h", "hello");
return map;
}
}
3.3 Dockerfile 文件编写
dockerdemo/Dockerfile 文件内容如下。
FROM java:8
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /dockerdemo
WORKDIR /dockerdemo
EXPOSE 8088
ADD ./target/dockerdemo.jar ./
CMD sleep 60;java $JAVA_OPTS -jar dockerdemo.jar
3.4 docker-compose 编写
dockerdemo/docker-compose.yml 文件内容如下。
version: '3'
services:
dockerdemo:
build:
context: ./
restart: always
container_name: dockerdemo
image: dockerdemo
ports:
- 8088:8088
3.5 IDEA 配置 Maven 应用
IDEA 提供了可视化的配置,可以看到底层执行命令类似 "C:\Program Files\Docker\Docker\resources\bin\docker-compose.exe" -f E:\workTyGit\dockerdemo\docker-compose.yml up -d --build
。
4 验证
- 查看某一个容器的命令:
docker port 容器号
- 查看所有 docker 容器使用的端口:
netstat -nlp |grep docker-proxy|awk '{print $4}'|sort
输入 http://192.168.37.200:8088/helloWorld
能正常访问即可,注意 docker 启动后要稍等一会,容器启动成功后才能访问。