【Docker】前后端分离前端工程构建镜像

前端工程构建镜像的思路

  • 前端工程编译后会生成dist目录
  • dist下的静态文件全部放到nginx
  • 访问nginx的根路径/,加载前端资源
  • 后端设置上下文content-path,这样后端接口有一个统一的前缀
  • 前端根据/content-path路由转发到后端
  • nginx也是根据/content-path转发到后端

准备前端镜像需要的nginx转发配置文件

创建文件default.conf.template,内容如下

upstream demo {
    # 可以通过环境变量设置指定后端地址,比如DEMO_SERVER=127.0.0.1
    server ${DEMO_SERVER};
}

# 开启gzip
gzip on;
# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
gzip_min_length 1k;
# gzip 压缩级别 1-10 
gzip_comp_level 2;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 隐藏nginx版本号
server_tokens off;

server {
	  # 1024以下的端口需要root权限,如果要以非root用户启动需要修改端口大于1024
    listen       8080;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_redirect off;
    }

    location /demo {
        proxy_pass http://demo;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

编写前端镜像的Dockerfile

FROM harbor.csair.com/library/nginx:1.22
LABEL maintainer="Tang Heng tangheng@wintelia.com"

COPY ./dist /usr/share/nginx/html
COPY default.conf.template /etc/nginx/templates/

ENV APP_USER=nginx

RUN chown -R $APP_USER.$APP_USER /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx /var/cache/nginx
RUN touch /var/run/nginx.pid
RUN chown $APP_USER.$APP_USER /var/run/nginx.pid

USER $APP_USER

CMD ["nginx", "-g", "daemon off;"]

执行docker构建命令

default.conf.template和Dockerfile都在前端工程的根路径下面

执行以下命令

docker image build --tag harbor.demo.com/demo/demo-front:latest .
docker image push harbor.demo.com/demo/demo-front:latest

这样镜像就构建好了,最后会push到私有harbor仓库,如果有公有云镜像仓库,也可以直接push到云上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太空眼睛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值