Openshift构建前端项目并配置nginx读取环境变量

一、 简介

Nginx代理后台接口地址,是将后台接口配置在配置文件nginx.conf文件中,但是nginx.conf文件无法直接使用“$”读取linux的环境变量,本次需求为在openshift中将前端代码需要的后代接口以环境变量的形式启动服务POD。
本次使用的方法是envsubst方式,以docker使用环境变量启动nginx和openshift制作S2I镜像为基础扩展,使用方法时,需先构建nodejs+nginx的S2I镜像
docker启动nginx使用环境变量可参考链接:
https://blog.csdn.net/weixin_44707404/article/details/106360770.
openshift制作nodejs+nginx的S2I镜像参考链接:
https://blog.csdn.net/weixin_44707404/article/details/106361290.

二、 准备docker-entrypoint.sh文件

vim docker-entrypoint.sh
#!/usr/bin/env sh
set -eu
envsubst '${JAVA_API_LOGIN_IP} ${JAVA_API_LOGIN_PORT} ${JAVA_SMS_IP} ${JAVA_SMS_PORT} ${HASURA_NGECC_IP} ${HASURA_NGECC_PORT} ${HASURA_XUNJIAN_IP} ${HASURA_XUNJIAN_PORT} ${HASURA_CACHE_IP} ${HASURA_CACHE_PORT} ${HASURA_MAIN_IP} ${HASURA_MAIN_PORT}' < /usr/local/nginx/nginx.conf.template > /usr/local/nginx/conf/nginx.conf
exec "$@"

修改权限为777:chmod 777 docker-entrypoint.sh

chmod 777 docker-entrypoint.sh

三、 准备nginx.conf.template文件

将nginx.conf文件拷贝为下来,名字为nginx.conf.template,并修改其中server模块内容(调用后台接口部分)为以下内容,并修改权限为777

cp nginx.conf nginx.conf.template
chmod 777 nginx.conf.template
vim nginx.conf.template
    server {
        listen       8080;
        server_name  localhost;
        location / {
            root   /opt/app-root/src/html;
            index  index.html index.htm;
	    try_files $uri $uri/ /index.html;
        }

     location ^~/api/ {
            proxy_pass http://${JAVA_API_LOGIN_IP}:${JAVA_API_LOGIN_PORT}/;
        }

     location ^~/sms/ {
            proxy_pass http://${JAVA_SMS_IP}:${JAVA_SMS_PORT}/;
        }
     location ^~/ngecc/ {
            proxy_pass http://${HASURA_NGECC_IP}:${HASURA_NGECC_PORT}/;
        }   
     location ^~/xunjian/ {
            proxy_pass http://${HASURA_XUNJIAN_IP}:${HASURA_XUNJIAN_PORT}/;
        }   
     location ^~/cache/ {
            proxy_pass http://${HASURA_CACHE_IP}:${HASURA_CACHE_PORT}/;
        }   
     location ^~/main/ {
            proxy_pass http://${HASURA_MAIN_IP}:${HASURA_MAIN_PORT}/;
        }   

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

四、 新增run_nginx文件

在s2i/bin目录下新增run_nginx文件
将run文件拷贝为run_nginx文件,并修改文件内容如下:

cp run run_nginx
vim run_nginx
#!/bin/bash -e
sh /docker-entrypoint.sh
bash -c "/usr/local/nginx/sbin/nginx -g 'daemon off;'"

五、 修改run文件

修改s2i/bin目录下run文件内容,文件内容为运行run_nginx文件,内容如下:

vim run
#!/bin/bash -e
#运行容器启动nginx服务,需要以下面内容作为启动容器命令,否则nginx服务将无法启动,容器秒停
#bash -c "/usr/local/nginx/sbin/nginx -g 'daemon off;'"
bash -c "sh /usr/libexec/s2i/run_nginx"

六、 修改Dockerfile文件内容

Dockerfile文件是在nodejs+nginx的S2I镜像基础上增加以下内容

vim Dockerfile
  ………….省略部分
ENV NODEJS_VERSION=13.2 \
    NGINX_VERSION=1.16.1 \
    JAVA_API_LOGIN_IP=127.0.0.1 \
    JAVA_API_LOGIN_PORT=8080 \
    JAVA_SMS_IP=127.0.0.1 \
    JAVA_SMS_PORT=8080 \
    HASURA_NGECC_IP=127.0.0.1 \
    HASURA_NGECC_PORT=8080 \
    HASURA_XUNJIAN_IP=127.0.0.1 \
    HASURA_XUNJIAN_PORT=8080 \
    HASURA_CACHE_IP=127.0.0.1 \
    HASURA_CACHE_PORT=8080 \
    HASURA_MAIN_IP=127.0.0.1 \
    HASURA_MAIN_PORT=8080
………….省略部分

COPY ./docker-entrypoint.sh /
COPY ./nginx.conf.template /usr/local/nginx/nginx.conf.template
	
USER 1001
#映射端口
EXPOSE 8080

七、 修改makefile文件

修改构建镜像的名称为nodejs-nginx-s2i-env

vim Makefile
IMAGE_NAME = nodejs-nginx-s2i-env
………….省略部分

八、 构建镜像

在Makefile文件目录下执行make,构建成功后,将镜像推送至openshft内部私有镜像仓库

make 
docker tag nodejs-nginx-s2i-env:latest 172.30.30.187:5000/openshift/s2i-nodejs-nginx-env;docker tag nodejs-nginx-s2i-env:latest docker-registry.default.svc:5000/openshift/s2i-nodejs-nginx-env
docker push 172.30.30.187:5000/openshift/s2i-nodejs-nginx-env;docker push docker-registry.default.svc:5000/openshift/s2i-nodejs-nginx-env

九、使用环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值