小白学习通过nginx代理部署springboot项目(docker)

2,981 阅读2分钟

环境

  • docker
  • nginx容器

配置nginx代理

不知道nginx容器的基本创建,可以去看这篇博客: 小白学习nginx(一)--docker创建nginx容器

1、编辑default.conf,该文件被我映射到宿主机的/usr/local/docker/nginx/config/conf.d/default.conf

vi /usr/local/docker/nginx/config/conf.d/default.conf

内容如下:

#将/springboot-service请求转发给http://127.0.0.1:8081/springboot-service处理
# 这里的ip不能设置成127.0.0.1,因为这是在nginx容器里,那么127.0.0.1就是代表nginx容器的IP地址,
# 而要代理的项目是运行在宿主机上的,所以这里的ip地址应该是你的宿主机的IP
location /springboot-service {
    proxy_pass http://ip:8888/springboot-service; #这里的端口记得改成项目对应的哦
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
}

2、修改springboot项目的application.yml文件,添加如下内容

servlet:
  context-path: /springboot-service

image.png 检查nginx配置文件并重新运行

docker exec nginx nginx -t
docker exec nginx nginx -s reload

请求的接口需要加上反向代理的路径/springboot-service,对应location /springboot-service

打包springboot项目

1、使用maven命令打包,编辑打包命令

image.png 然后将打包好的jar拷到服务器,我存放在了服务器的/tmp/test/docker-springboot目录下。

因为宿主机没有安装jdk,所以没有java程序的运行环境,而且,我希望能够容器化运行,所以要将springboot项目放到jdk容器中运行,jdk容器中包含jdk,即有java项目运行的环境。

2、在/tmp/test/docker-springboot目录下新建Dockerfile文件

cd /tmp/test/docker-springboot
vi Dockerfile

Dockerfile内容如下:

# 基础镜像
FROM openjdk:8-jdk-alpine

# 作者信息
MAINTAINER "**@qq.com"

# 添加一个存储空间
VOLUME /tmp

# 暴露8888端口,不写默认和项目的端口保持一致
# EXPOSE 8888


# 往容器中添加jar包
COPY app-1.0.jar app.jar

# 启动镜像自动运行程序,这里的/app.jar是上面拷贝到容器中的app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

3、打包springboot项目的镜像

// .代表当前目前
docker build -t springboot-app:1.0 .

4、查看镜像

docker images

可以看到已存在springboot-app这个镜像 image.png

5、创建容器

docker run -d --name springboo-app -p 8888:8888 springboot-app:1.0

docker ps

image.png

6、接口测试

打开浏览器输入:http://ip/springboot-service/user/index image.png 可以看到通过反向代理部署成功

7、让项目一开机就运行

docker update --restart=always springboot-app

备注:# docker中OpenJDK验证码无法显示 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion,解决办法:Dockerfile中添加如下命令: RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig