我是码头工人的新手。让我来描述一下我的情景: 我为Web应用程序制作了2个docker镜像。一个图像是用于演示的前端Web层,另一个是提供REST服务的后端层。
所以我需要为这2张图片运行2个容器。前端呼叫后端服务。现在我需要在前端代码中编写后端的URL并构建映像......我不认为这是微服务的正确方法......
因为如果我的笔记本电脑的IP发生变化或者其他人想要使用我的图像,他们就无法获得服务......那么如何制作URL变量并使我的前端图像可以用于其他人而无需重建?
THX!
答案 0 :(得分:1)
从Docker 1.10开始,您可以使用networking。这样做是将docker容器的ip地址绑定到可以在容器中使用的主机名。
如果您使用docker-compose
,则会自动创建一个网络,这两个服务可以相互通信。以下是一个例子:
version: "2"
services:
frontend:
image: nginx
networks:
- my-network
environment:
BACKEND_URL: "http://backend"
backend:
image: mariadb
networks:
- my-network
environment:
FRONTEND_URL: "http://frontend"
networks:
my-network:
driver: bridge
您可以在Getting started with multi-host networking
可用here中详细了解相关信息,也可以按照Composing Multi-container Networks with Docker Compose这样的指南进行阅读
答案 1 :(得分:0)
您可以通过在运行时将环境变量传递给docker容器来完成此操作。
类似的东西:
docker run --name frontend -e MY_APP_BACKEND_IP="192.168.7.2" -e MY_APP_BACKEND_PORT="3000" ...
在后端,让我们说你正在使用NodeJS,你可以这样做:
var backend_ip = process.env.MY_APP_BACKEND_IP;
注意:不是NodeJS专业人士,但有些谷歌搜索告诉我该怎么做