我正在使用许多docker容器。我想为其中一个分配一个静态ip,然后在另一个dockerfile
中使用该静态ip。
我想使用某种配置文件,例如.env
文件,并在dockerfile
和docker-compose.yml
中使用它。
答案 0 :(得分:1)
我想办法。简单地:
.env
文件,例如ip_server=172.20.0.2
。 .env
中使用docker-compose.yml
变量,并将其作为参数传递给docker image,例如:
services:
client
build:
context: ./client
args:
- IP_SERVER=${ip_server}
dockerfile
中使用它
ARG IP_SERVER
ENV IP_SERVER=${IP_SERVER}
参考文献:
-docker-compose env file
-docker-compose args
-dockerfile env
答案 1 :(得分:1)
您可能不想做任何一件事情。
如果您在同一Docker Compose设置中运行两个容器,则Compose将为您创建一个私有Docker网络,一个容器可以使用其容器名称(或{{1中的块名称}})作为主机名。那应该消除对静态IP地址的需要。
第二,像这样对主机名或IP地址进行硬编码会使重用设置变得更加困难。作为一个非常基本的示例,在Docker外部进行开发时,您可以在同一主机上运行客户端和服务器,并使用docker-compose.yml
作为主机名,但是在Docker Compose设置中,它们将位于不同的容器中并且使用不同的容器主机名。这也意味着您永远无法将映像localhost
到注册表中,这在某些常见的部署方案中是必需的。环境变量是从外部传递此变量的常用方法。
完成此操作的docker push
可能看起来像:
docker-compose.yml