我想创建一个简单的docker-compose设置。我有一个由nginx服务的JS实现的静态前端 - 这是一个容器。我还有一个API后端Web服务器 - 另一个容器。
我可以通过典型的端口转发单独运行两个容器,也可以通过docker-machine ip
给出的IP从我的主机(Mac OS X)访问。问题是前端正确地提供其静态内容,但是javascript正在向错误的地址发出API请求。由于主机是实际执行API调用的主机,因此需要从主机的角度为前端应用程序配置后端的地址。
有没有办法将docker机器的IP地址传递到容器的环境中?或者其他一些可以实现这一目标的网络配置。
答案 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