我正在使用Docker运行Express应用,如果我在端口3000上运行它,一切都很好。我正在使用的Dockerfile是
FROM node:boron
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 3000
CMD ["npm", "start" ]
我现在想在端口3500上运行它。我将Dockerfile调整为
FROM node:boron
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 3500
CMD ["PORT=3500", "npm", "start" ]
和docker run命令来
docker run -p 3500:3500 me/myapp
它引发以下错误
container_linux.go:262: starting container process caused "exec: \"PORT=3500\": executable file not found in $PATH"
我敢肯定这是基本的东西,但是我是新手,无法通过谷歌搜索找到解决方案。朝着正确方向的指针将不胜感激。
您试图PORT
像在bash脚本中一样设置环境变量。Docker不理解-CMD
配置需要它可以执行的东西-命令名和一些参数。
在Docker中执行所需操作的方法是使用ENV
。就您而言,它看起来像这样:
ENV PORT 3500
CMD ["npm", "start" ]
您可以将ENV
Dockerfile中的任意位置放在之前CMD
,但稍后保留一部分是有意义的,因此更改不会强制进行昂贵的重建,并且可以共享更多层。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句