前端项目docker容器化布署如何配置后台服务器地址

前言

Docker是什么东西以及为什么使用docker我就不赘述了,最近遇到一个项目,需求是这样的:前后端服务均布署在docker中,但是由于每次启动后端服务时它的IP及端口号是动态变化的,所以前端每次都需要在后端服务启动后手动配置后台服务地址,那么有没有自动配置的方法呢,这就是这篇文章所要解答的问题。

问题

比如,我有一个前端项目,它的配置文件config.js是这样的

window.GLOBAL={SERVICE_URL:"http://192.250.23.233:8088"}

布署在docker以后192.250.23.233和8088会变成其它的,变成什么再容器启动前谁也不知道。
那我怎么在容器启动后自动替换192.250.23.233和8088呢。

解决方案

在docker启动时通过-e参数将ip和port写入环境变量,容器启动后通过shell主动将ip和port对应的环境变量写入config.js

示例

//Dockerfile
FROM hub.c.163.com/public/centos:7.2.1511
COPY jdk8.rpm jdk8.rpm
RUN rpm -ivh jdk8.rpm
RUN yum clean all
RUN mkdir /tomcat
COPY ./tomcat /tomcat
COPY ./sdc_start.sh /home/sdc_start.sh
RUN chmod 777 /tomcat/bin/* 
CMD bash /home/sdc_start.sh
//sdc_start.sh
#!/bin/bash
# description: sdc_start ....
#启动服务器
echo "服务启动中..."
echo window.GLOBAL="{SERVICE_URL:\"http://$IP:$PORT\"}"> /tomcat/webapps/dist/static/conf/config.js
/tomcat/bin/catalina.sh run

然后启动容器
docker run -d -e IP="192.168.111.112" -e PORT="8999" containerID
config.js中的内容就会变成

window.GLOBAL={SERVICE_URL:"http://192.168.111.112:8999"}

你可能感兴趣的:(WebGis)