将ARG从docker-compose.yml传递到docker映像

时间:2020-02-07 19:52:28

标签: docker docker-compose dockerfile

所以我有一个已创建的NodeJS API,它在package.json中包含一个Private NPM包。

我在这个项目中有以下Docker文件:

Dockerfile

FROM node:10

WORKDIR /usr/src/app
ARG NPM_TOKEN
COPY .npmrc ./  
COPY package.json ./
RUN npm install  
RUN rm -f ./.npmrc
COPY . .

CMD [ "npm", "start" ]

.npmrc

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

我已经通过运行以下命令来构建此API:

docker build --build-arg NPM_TOKEN=${MY_NPM_TOKEN} -t api:1.0.0 .

这将成功构建图像。

在我的主应用程序中,我有一个docker-compose.yml,我想运行该映像。

version: '3' services: redis: container_name: redis image: redis:3.2.8 ports: - "6379:6379" volumes: - ./data:/data api: container_name: api image: api:1.0.0 build: context: . args: - NPM_TOKEN={MY_NPM_TOKEN} ports: - "3001:3001"

我运行docker-compose up时失败,并显示以下错误:

Failed to replace env in config: ${NPM_TOKEN}

有人有什么主意,为什么我的图像没有被通过的ARG所吸引?

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在尝试从名为NPM_TOKEN的环境变量传递MY_NPM_TOKEN自变量。

但是,语法上存在错误,您应该更新docker-compose.yaml文件

来自- NPM_TOKEN={MY_NPM_TOKEN}

- NPM_TOKEN=${MY_NPM_TOKEN}