Docker - 从主机的角度构建配置前端和后端IP

时间:2016-05-25 17:53:29

标签: javascript docker docker-compose

我想创建一个简单的docker-compose设置。我有一个由nginx服务的JS实现的静态前端 - 这是一个容器。我还有一个API后端Web服务器 - 另一个容器。

我可以通过典型的端口转发单独运行两个容器,也可以通过docker-machine ip给出的IP从我的主机(Mac OS X)访问。问题是前端正确地提供其静态内容,但是javascript正在向错误的地址发出API请求。由于主机是实际执行API调用的主机,因此需要从主机的角度为前端应用程序配置后端的地址。

有没有办法将docker机器的IP地址传递到容器的环境中?或者其他一些可以实现这一目标的网络配置。

1 个答案:

答案 0 :(得分:0)

更多的解决方法而非实际答案:

我能够修改前端配置以使用“document.location.hostname”代替静态定义的地址。

考虑的选项是在/ etc / hosts中有一个条目,它根据某些脚本动态更新(见下文),以便VM始终可以通过某个静态名称引用,然后配置前端使用该名称。这更像是一种黑客行为,但可以适用于更普遍的情况。

if [ ! -z "$DOCKER_HOST" ]; then
    ip=`echo $DOCKER_HOST | grep -o '\d\+\.\d\+\.\d\+\.\d\+'`
    grep -v "$ip" /etc/hosts | grep -v "docker-dev" > tmp_hosts
    echo "$ip docker-dev" >> tmp_hosts
    sudo mv tmp_hosts /etc/hosts
fi