ebcli发出docker运行命令的方式似乎有一些问题。
以下是我在MacOS计算机上运行的命令
eb local run --port 3001
虽然eb能够成功构建docker镜像,但当它尝试运行相同的镜像时,它会抛出下面的错误。
docker: invalid publish opts format (should be name=value but got '3001:${PORT}').下面是我的Dockerfile的样子
# Check out https://hub.docker.com/_/node to select a new base image
FROM node:10-slim
# Set to a non-root built-in user `node`
USER node
# Create app directory (with user `node`)
RUN mkdir -p /home/node/app
WORKDIR /home/node/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY --chown=node package*.json ./
RUN npm install
# Bundle app source code
COPY --chown=node . .
RUN npm run build
# Bind to all network interfaces so that it can be mapped to the host OS
ENV HOST=0.0.0.0 PORT=3000
EXPOSE ${PORT}
CMD [ "node", "." ]发布于 2020-04-28 06:09:32
这是ebcli的一个限制。发生这种情况的原因是ebcli解析您的dockerfile以检索公开的端口。因为ebcli将EXPOSE指令作为文字字符串读取,所以当您在EXPOSE指令中引用环境变量时,ebcli会尝试将该字符串作为-p 3001:${PORT}传递给端口选项。
要解决此问题,您需要修改EXPOSE指令以显式公开值3000。
示例:
EXPOSE 3000可以进行一些增强来改善这种体验。请随时在ebcli github repository上报告这一点。
https://stackoverflow.com/questions/61354990
复制相似问题