基于节点env变量的docker-compose.yml文件切换命令

时间:2019-02-21 04:18:43

标签: node.js docker

我正在尝试托管应用程序,因此我创建了服务器和客户端文件夹。在服务器文件夹节点js和客户端中,它使用create-react-app做出反应。

因此对于docker,我在服务器和客户端文件夹中创建了两个Dockerfile。在项目根目录中创建了一个docker-compose.yml文件。

对于本地开发,我需要具有服务器的自动重载功能,因此,我已经放置了

command: nodemon index.js

docker-compose.yml文件中的

。一切正常。当我建立码头工人。但是当我托管此应用程序时,我需要更改为

`command: node index.js`

我认为在托管应用程序时它将添加节点环境变量的唯一方法,但是问题是我可以在服务器文件夹的index.js之类的

中进行访问
process.env.APPLICATION_ENVIRONMENT

但是如何访问docker-compose.yml文件?由于我想使用相同的docker-compose.yml文件进行托管,并通过具有服务器自动重新加载的功能,使开发人员可以轻松地开始工作。

还有其他更好的方法可以做到这一点。 ?

1 个答案:

答案 0 :(得分:1)

from bs4 import BeautifulSoup import requests import csv import pandas as pd links = pd.read_csv('C:\\Users\\acer\\Desktop\\links.csv',encoding = 'utf-8',dtype=str) for i in range(1,10): link = links.iloc[i,0] for count in range(1,5): r = requests.get(link + str(count)) soup = BeautifulSoup(r.text,'lxml') ##comp links for links in soup.find_all('th',{"id":"c_name"}): link = links.find('a') li = link['href'][3:] print("https://www.hindustanyellowpages.in/Ahmedabad/" + li) 文件支持variable substitution。然后,您可以使用它在docker-compose文件中存储和设置要直接运行的命令。

例如一个示例docker-compose

docker-compose.yml
如果您的Shell中没有version: "3" services: server: build: ./server command: ${NODE_COMMAND:-nodemon} index.js 变量,则

${NODE_COMMAND:-nodemon}将默认为nodemon。您可以通过在启动容器时为NODE_COMMAND提供一个值来覆盖生产中的该值,即:

NODE_COMMAND

或者,在托管服务器上,您可以在运行$ NODE_COMMAND=node docker-compose up -d命令的同一目录中创建一个.env文件,如下所示:

docker-compose

然后NODE_COMMAND=node 将自动替换您撰写文件中的值。有关更多详细信息,请参见有关变量替换的链接页面。

希望这会有所帮助。