我有两个容器映像,并使用“ docker-compose up -d ”进行组合和运行docker。 这很好。我想在另一个端口8081中运行相同的容器映像。 我们可以通过端口映射作为命令行参数docker-compose up -port novnc:8081:8080吗? 如何将端口映射动态传递给docker-compose up命令?
version: '2'
services:
ide:
image: myApp
image: myImage:latest
environment:
- DISPLAY=novnc:0.0
depends_on:
- novnc
networks:
- x11
novnc:
image: myImageTwo:latest
environment:
- DISPLAY_WIDTH=1600
- DISPLAY_HEIGHT=968
ports:
- "8080:8080"
networks:
- x11
networks:
x11:
答案 0 :(得分:1)
您可以使用.env
文件来实现。
例如,您将拥有以下内容:
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
在示例中,您可以看到标记值在env文件中设置的变量中。
您可以在official doc
中找到更多信息答案 1 :(得分:1)
将“端口”部分更改为:
ports:
- "${MY_PORT}:8080"
然后使用MY_PORT=8081 docker-compose up -d
答案 2 :(得分:1)
在docker-compose.yml中使用$ {VAR}
例如
version: '2'
services:
apache:
image: httpd:2.4
volumes:
- .:/usr/local/apache2/htdocs/
ports:
- ${APP_PORT}:80
然后使用环境变量:
$ export APP_PORT=8080
$ docker-compose up
或内联版本:
$ APP_PORT=8080 docker-compose up
答案 3 :(得分:0)
您还可以使用端口范围
ports:
- "8080-8081:8080"
因此您不必传递参数