Docker学习-第六篇 在 Docker 中部署 Springboot 项目(Windows)

一、创建springboot项目

创建一个 springboot 工程 spring-boot-docker

pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

HelloController.java

@RestController
public class HelloController {
    @GetMapping("/docker")
    public String hello() {
        return "Hello Docker!!";
    }
}

编写 Dockerfile ,放置到 src/docker 目录下

FROM java:8
VOLUME /tmp
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

二、部署项目到 Docker

1. 准备文件

执行 mvn 命令打包 springboot 工程

mvn install

把 jar 包和 Dockerfile 复制到某一个文件夹中

2. 构建镜像文件

cd到存放 jar 包和 Dockerfile 的目录下

执行镜像构建命令

docker build -t spring-boot-docker .

-t代表要构建的镜像的名字和标签,通常为 name:tag 或者 name 格式,若不声明 tag 则默认是 latest

.代表当前目录,也就是Dockerfile所在的目录

运行完成之后查看 images ,可以看到镜像已经构建成功

docker images

3. 运行项目

运行镜像

docker run -p 8080:8080 -d spring-boot-docker

-p表示端口映射,冒号左边为 Docker 容器外的端口号,右边为容器内的端口号

-d表示后台运行

查看 springboot 的启动日志

# 查看容器
docker container ls
# 查看运行日志
docker logs -f -t --tail 行数 容器名

查看运行的镜像

docker ps

浏览器访问 http://localhost:8080/docker ,查看接口返回结果

三、问题处理

Windows 访问浏览器显示连接不可用。

Docker 是运行在 Linux 上的,我们在 Windows 系统中运行 Docker ,实际上是先在 Windows 下先安装了一个 Linux 环境,然后在这个环境中运行的 Docker 。所以,访问服务中使用的 localhost 指的是这个 Linux 环境的地址,而不是 Windows 。

在 QuickStart 终端执行 docker-machine ip default,找到 Window 系统下的 Linux 环境的地址为 192.168.99.100 。

访问 http://192.168.99.100:8080/docker ,依旧返回连接不可用。

其实原因出在 Docker Toolbox 无法被外网访问

打开 Oracle VM VirtualBox ,在 设置 > 网络 > 网卡1 > 高级 中配置“端口转发”,新增转发规则,将主机( 127.0.0.1 )的 8080 端口指向子系统的 8080 端口,配置生效后再次访问 http://localhost:8080/docker 即可。

发布了40 篇原创文章 · 获赞 25 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/yym373872996/article/details/105678227