使用Express和Docker公开3000以外的端口

我正在使用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" ]

您可以将ENVDockerfile中任意位置放在之前CMD,但稍后保留一部分是有意义的,因此更改不会强制进行昂贵的重建,并且可以共享更多层。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章