将参数从docker-compose.yml传递到docker映像
因此,我创建了一个nodejsapi,它在package.json中包含一个私有NPM包 我在该项目中有以下Docker文件: Dockerfile将参数从docker-compose.yml传递到docker映像,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,因此,我创建了一个nodejsapi,它在package.json中包含一个私有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"
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}-tapi:1.0.0.
这成功地构建了映像
在我的主应用程序中,我有一个docker-compose.yml,我想运行这个映像
version:'3'服务:redis:container\u名称:redis映像:redis:3.2.8端口:-“6379:6379”卷:-./data:/data api:container\u名称:api映像:api:1.0.0构建:上下文:。args:-NPM\u令牌={MY\u NPM\u令牌}端口:-“3001:3001”
当我运行docker compose up
时,它失败并出现错误:
未能在配置中替换env:${NPM_TOKEN}
有人知道为什么我的图像没有接收传递的
ARG
吗?据我所知,您试图传递名为my\u NPM\u TOKEN
的环境变量中的NPM\u TOKEN
参数
但是,语法中有一个错误,您应该更新docker compose.yaml
文件
from-NPM\u TOKEN={MY\u NPM\u TOKEN}
对于
-NPM_-TOKEN=${MY_-NPM_-TOKEN}
我认为您应该使用docker compose build
进行测试,但无论哪种方法,如果映像不存在,它都会生成。您如何设置$MY\u NPM\u令牌
?你有一个.env文件吗?@leeman24${MY_NPM_TOKEN}
是一个字符串,它是来自NPM的一个标记,因此在我的文章中它的一个示例是:-NPM_TOKEN=4884nfhf939fn39