在运行的Docker容器上testing:我的环境variables在哪里?
背景
我正在运行的docker容器中testing代码。 PM2将过程级别的variables传递给我的应用程序。 虽然我的应用程序运行正常,并且有权访问我在json文件pm2中设置的环境variables,但是我创build的新bash会话用docker exec -it bash
来testing它并不能访问这些variables。 根据我通过实验和研究所了解到的,docker不允许修改正在运行的容器中的环境variables。 所以如果我在新的bash会话中运行printenv
,我的variables就不存在了。
我使用npm test
(在新的bash会话中) npm test
被设置为运行在正在运行的服务器上(我的应用程序部署在当前正在运行的容器中)。
题
我怎样才能获得相同的环境variables,我的进程级别上运行的应用程序在环境级别可用,所以新的bash会话可以可靠地testing我的应用程序?
对于docker来说,我相对比较陌生,可能以这种方式对正在运行的容器进行testing是一种反模式。 我接受另一种方式来尝试这个build议,但我更喜欢做这个“docker的方式”。
谢谢!
我看过的资源
- 文档显示如何在运行
docker exec
时手动设置环境variables。 我有足够的variables来使这个繁琐,而且很容易出现人为错误。 - 这 SOpost是非常相似的,但它假设没有容器已经运行。 我有一个正在运行的容器,我正在testing。
- 本文解释了
docker exec
和docker run
之间的一些区别