javascript - Docker:为什么从 .env 传递的变量即使从 .env 中删除并重建后仍会留在容器中

标签 javascript docker azure-iot-edge

我试图理解为什么当我从我的 .env 文件中明确删除或注释掉它们时,我的 Docker 容器中的 env 变量仍然出现。我是 Docker 的新手,不知道这是预期的行为还是异常。

我的系统设置方式是,我在本地启动 Azure 的 IoT Edge 服务器实例(通过 deployment.template.json),它构建 Docker 容器并使用关联的 .env 文件。

现在让我困惑的是,如果我要完全停止服务器(而不是暂停),从 .env 文件中注释掉/删除变量,重新启动服务器,并检查容器( docker container inspect),我仍然看到变量名称和值。我还在停止服务器后使用 docker system prune -a --volumes 来 trim 我的系统和卷,然后重新启动服务器只看到仍然列出的变量。

为了以防万一,在我的 deployment.template.json 中,我将我的变量作为 MY_VAR=${MY_VAR} 传递。然后在我的 .env 文件中,我将变量设置为 MY_VAR=abc123

来 self 的 Dockerfile:

# -------------
# Build Sources
# -------------
FROM node:10-alpine as builder

# Install additional git and openssh dependencies and make sure GitLab domain is accepted by SSH
RUN apk add --no-cache openssh git curl \
  && mkdir /root/.ssh/ \
  && touch /root/.ssh/known_hosts \
  && ssh-keyscan gitlab.com github.com >> /root/.ssh/known_hosts

WORKDIR /app

# Install app dependencies
RUN npm i -g typescript --no-cache --silent
COPY package*.json ./
RUN npm ci --only=production --silent

# Copy sources and build
COPY . .
RUN npm run build

# ----------------
# Production Image
# ----------------
FROM node:10-alpine
RUN apk add --no-cache curl

WORKDIR /app
COPY --from=builder /app/node_modules /app/node_modules
COPY --from=builder /app/dist /app/dist
COPY . .

USER node
CMD ["node", "dist/index.js"]

最佳答案

您可以对您的容器运行“docker inspect”并查看在 docker create 选项中定义了哪些环境变量。

您还可以在 Azure 门户中检查 docker 创建选项。

关于javascript - Docker:为什么从 .env 传递的变量即使从 .env 中删除并重建后仍会留在容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898656/

相关文章:

javascript - 算术运算符符号作为 Javascript 中的函数名称

python - 模块导入错误,如何刷新Ipython session ?

.net - foreach Azure.Pageable<BlobItem> 然后抛出 System.FormatException

Azure物联网边缘: Edge Agent can't add X509 certificate to the store

JavaScript。如何通过数组函数更改对象中的某些数据?

javascript - response.text() 中的额外引号

javascript - 使 jVectormap 不可拖动

docker - 在Docker容器中获取代码

docker - 图坦构建后图像不存在