【docker-compose】【nginx】动态配置

本文介绍了如何在部署前端镜像时,通过Dockerfile和docker-compose.yml文件,动态修改Nginx的反向代理后端服务IP地址,实现多个环境的灵活配置,如同时部署两个web项目,每个项目后端和前端对应不同服务。
摘要由CSDN通过智能技术生成

需求:部署前端镜像时需要动态修改nginx反向代理的后端服务的ip地址

  1. 原.conf配置调整,改为嵌入变量的文件模版
  2. Dockerfile 修改,通过envsubst将换将变量注入模版后再运行nginx
  3. docker-compose配置,通过environment动态修改变量

default.conf.tmplate(原default.conf)

动态变量:${MY_IP}

server {
    listen       80;
    server_name  localhost;

    location / {
      root   /usr/share/nginx/html;
      try_files $uri /index.html;
    }

    location /api{
      proxy_pass http://${MY_IP}:18892;
    }
    
}

Dockerfile

如果有多个变量可用逗号隔开,envsubst '$MY_IP,$MY_PORT'

FROM nginx:1.20.2-alpine

COPY dist /usr/share/nginx/html

COPY nginx.conf /etc/nginx/nginx.conf
# 拷贝模板
COPY default.conf.tmplate  /etc/nginx/conf.d
# 切换目录
WORKDIR /etc/nginx/conf.d
# 将环境变量注入模版
ENTRYPOINT envsubst '$MY_IP'  < default.conf.tmplate > default.conf && cat default.conf && nginx -g 'daemon off;'

EXPOSE 80

docker-compose.yml

注意environment下的变量名称MY_IP要与上述对应

environment:
      - MY_IP=server2

yml完整配置示例:
通过同一套镜像部署两个web项目,后端对应不同的数据库,前端对应不同的后端

version: '3'
services:
  server1:
    image: 127.0.0.1:5000/server
    container_name: server1
    restart: always
  front1:
    image: 127.0.0.1:5000/front
    container_name: front1
    restart: always
    environment:
      - MY_IP=server1
    depends_on:
      - server1
    ports:
      - "8080:80"
  server2:
    image: 127.0.0.1:5000/server
    container_name: server2
    restart: always
  front2:
    image: 127.0.0.1:5000/front
    container_name: front2
    restart: always
    environment:
      - MY_IP=server2
    depends_on:
      - server2
    ports:
      - "8081:80"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值