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

标签: openshift  docker  nginx  centos  linux  

一、 简介

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

九、使用环境变量

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

版权声明:本文为weixin_44707404原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44707404/article/details/106380284

智能推荐

Liunx中安装JDK并配置环境变量

1、查看liunx版本下载对应的jdk 2、查看服务器可支持的jdk版本 yum -y list java* devel是安装的jdk非devel则安装的是jre 3、安装jdk yum install -y java-1.8.0-openjdk-devel.x86_64 默认安装位置 /usr/lib/jvm 4、配置环境变量  vim /etc/profile 资...

CV笔记03:自监督GAN(ss-gan)

无需标注数据,利用辅助性旋转损失的自监督GANs,-- 对抗+自监督的无监督方式 《通过辅助旋转损失进行的自监督GAN》CVPR 2019 论文速看 0.摘要 目前自然图像合成主要是条件GAN,但是其缺点是需要标注数据。 我们利用两种流行的无监督学习技术,对抗训练和自我监督,并朝着缩小有条件GAN和无条件GAN之间的差距迈出了一步。 我们允许网络在代表学习的任务上进行协作,同时相对于经典GAN博弈...

题目练习

题目: 解决的代码: 注意:链表指针在操作以后记得移动...

Retrofit(三)上传文件

想了想,觉得还是把自定义的东西放到最后再讲,所以讲下用Retrofit上传文件,就拿上传图片来说,因为上传图片我是想写一个专题的,包括以下: 1.上传图片操作 2.展示图片操作 3.选择图片操作 上传图片这篇讲,用Retrofit,之后我还想写一篇是用httpurlconnection的,因为用它会有个拼接的操作,只有经历过拼接才会更深刻的了解使用Http上传文件的过程。展示图片我其实已经写完了,...

Linux安装SQL2019

官方文档 导入公共存储库 GPG **: 为 SQL Server 2019 注册 Microsoft SQL Server Ubuntu 存储库: 使用以下命令进行安装 SQL2019: 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本,并执行以下命令: 完成配置后,验证服务是否正在运行:...

猜你喜欢

vue-cli使用vscode编辑器如何自动eslint检测

VSCode 保存时自动ESlint格式化 Eslint 自动格式化 首先安装ESLint插件 2.安装完成后,每次修改完代码都需要执行 "npm run lint"之后才能格式化 打开设置选项 编辑代码settings.json 新建.eslintrc.js文件 根据eslint官网规则(eslint官网),编写eslintrc.js文件 保存之后,今后在保存时就能自动ESL...

搭建VUE脚手架(二)---修改完善cli3

光创建完cli3脚手架只是成功了一半,现在还无法直接使用(确切地说还不好用),还需要继续改造 这是本文修改后项目的目录结构,创建文件时可以参考。 1.创建vue.config.js 2.创建常量配置文件(.env.development和.env.production),用于存放常量 .env.development .env.production 3.ESLink配置(别问为什么,问就是我严格语...

hadoop-zookeeper-hive-flume-kafka-hbase集群,解决登录报错,Cli.sh启动失败,Error: java.lang.UnsupportedClassVersion

1.克隆虚拟机之前清理垃圾 2.选中“克隆虚拟机”:“右键→管理→克隆” 弹窗 操作 1 下一步 2 克隆自:虚拟机中的当前状态 3 创建完整克隆 4 虚拟机命名,选择存储位置 5 完成 3.配置IP 3.1获取地址:vi /etc/udev/rules.d/70-persistent-net.rules 3.2修改本机IP:vi...

访问日志

1.访问日志不记录静态文件        一个网站会有很多元素,比如图片、js、css等静态文件比较多,用户每请求一个页面就会访问很多的静态元素,这些元素的请求都会被记录到日志中去。如果一个网站访问量比较大,那么访问日志就会增加的非常快,甚至一天就可以达到几个GN。这不仅会对服务器的磁盘空间造成影响,更重要的是会影响磁盘的读写速度。    ...

苹果2016年或失去“世界最大公司”头衔

× loading.. 企业网D1Net 登入注册 当前位置:新闻中心 → 行业动态 → 正文 苹果2016年或失去“世界最大公司”头衔 责任编辑:jackye 作者:风帆 | 2016-01-15 09:03:57 本文摘自:腾讯科技 苹果2016年或失去“世界最大公司”头衔 1月15日,据国外媒体报道,随着谷歌在智...