我尝试process.env.port
来获取环境中的端口变量,但是在构建docker时它没有任何变化。如果我有两个这样的服务泊坞窗,如何从mongo获取端口
services:
app:
image: lostproperty
container_name: lost-property
ports:
- "127.0.0.1:3100:3000"
environment:
- port :"3100"
- API_URL:"http://localhost:3000/lost-property/"
depends_on:
- mongo
volumes:
- ../app:/var/www/html
stdin_open: true
tty: true
restart: always
mongo:
image: mongo
ports:
- "127.0.0.1:27018:27017"
volumes:
- ./data:/data/db
environment:
- MONGO_URL:"mongodb://localhost:27017/lost-property"`
答案 0 :(得分:1)
通过将其包含在docker-compose文件中,可以确保两个容器都能够使用其容器名称相互通信。这样,财产损失就可以通过mongodb:// mongo:27017
与mongo对话networks:
default:
external:
name: my-network
您可能想在与docker-compose.yml相同的目录中创建一个.env文件。在.env中,使用类似
MONGO_PORT=27017
MONGO_URL=mongodb://mongo:27017/lost-property
API_URL=http://localhost:3000/lost-property/
PORT=3100
在docker-compose文件中,像这样使用环境配置
services:
app:
environment:
image: lostproperty
container_name: lost-property
ports:
- ${PORT}:${PORT}
environment:
- PORT
- API_URL
- MONGO_PORT
- MONGO_URL
depends_on:
- mongo
volumes:
- ../app:/var/www/html
stdin_open: true
tty: true
restart: always
mongo:
image: mongo
ports:
- ${MONGO_PORT}:${MONGO_PORT}
volumes:
- ./data:/data/db
environment:
- MONGO_URL
将VALUE用于环境部分,将$ {VALUE}用于其他任何地方(例如在端口中)。 然后在您的app.js或index.js或任何您可以使用的端口和网址中获取
process.env.MONGO_PORT
process.env.MONGO_URL
process.env.PORT
process.env.API_URL
您可以输入
docker-compose config
在运行docker-compose up之前查看配置的样子
此外,如果您运行的是带有express之类的api服务器,则需要使用0.0.0.0作为ip进行监听,而不是127.0.0.1(如果您希望能够从容器外部访问/测试它)和他们的网络
答案 1 :(得分:0)
首先,dockerfile有一个EXPOSE
句子,您在其中公开了容器的特定端口。您无法更改该曝光。
第二,旧金山日出说,您可以使用相同的网络并将其链接。