在运行的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 execdocker run之间的一些区别