【问题标题】:Dockerfile for Node.js with Python deploying to AWS Elastic Beanstalk用于 Node.js 的 Dockerfile,将 Python 部署到 AWS Elastic Beanstalk
【发布时间】:2019-12-17 08:20:57
【问题描述】:

我希望能够在网络上运行我的应用程序。只要我在 EB 上使用 Docker,我就印象深刻,只要 Dockerfile 中定义的所有进程,一切都应该类似于 localhost 运行。我喜欢使用 AWS Elastic Beanstalk。我对此很陌生,使用 Docker 的 EB 似乎很容易上手和维护。到目前为止,我得到了 Node 部分。我刚刚制作了 zip 文件并在 EB 上上传/部署。但是 Python 调用不适用于 3rd 方库,即我从路由调用 .py 文件但它返回错误,因为导入不起作用。据我了解,多阶段 Docker 环境是可能的。即https://hub.docker.com/r/nikolaik/python-nodejs/。我了解一般前提,但不知道如何在我的案例中采用它。 我尝试将 Python 部分添加到 Dockerfile 并从 requrements.txt 加载必要的库。但现在我无法在 AWS EB 上进行部署。 这是我的 docker 文件:

FROM python:3.7 as pyth
RUN mkdir /project
WORKDIR /project
COPY requirements.txt /project/requirements.txt

RUN pip install -r requirements.txt
COPY . /project/

FROM node:8-alpine
WORKDIR /opt/app
COPY package.json package-lock.json* ./
RUN npm cache clean --force && npm install
COPY . /opt/app

ENV PORT 80
EXPOSE 80

COPY --from=pyth /project /opt/app
CMD [ "npm", "start" ]

非常感谢任何帮助。

【问题讨论】:

  • 您不能只将 python 文件复制到 nodejs 容器,因为您没有将要求安装到该容器中的 python(如果它甚至安装了 python)。如果您需要在您的应用程序中同时使用两者,您需要构建一个同时具有 python 和节点的图像,并安装两者的要求
  • @Ngenator。我知道了。谢谢。如果可能的话,关于如何在 Dockerfile 中实现这一点的任何建议。

标签: node.js python-3.x amazon-web-services docker dockerfile


【解决方案1】:

您可以使用的现有映像包含已安装的两个依赖项。见https://hub.docker.com/r/nikolaik/python-nodejs/

这是一个未经测试的示例,说明如何使用它

FROM nikolaik/python-nodejs:python3.7-nodejs8

RUN mkdir /project
WORKDIR /project
COPY requirements.txt /project/requirements.txt

RUN pip install -r requirements.txt

RUN mkdir /opt/app
WORKDIR /opt/app
COPY package.json package-lock.json ./

RUN npm cache clean --force && npm install

COPY . /opt/app

ENV PORT 80
EXPOSE 80

CMD [ "npm", "start" ]

请注意,您不需要多阶段 Dockerfile。

如果您想进一步构建自己的镜像,请查看我给出的示例中用于构建镜像的 Dockerfile

希望对你有帮助

【讨论】:

  • 就是这样。非常感谢
  • 你对如何将 selenium webdrives 添加到同一个 Dockerfile 有什么建议吗?
  • 没问题。你的回答为我节省了几个小时。再次感谢
猜你喜欢
  • 2014-12-25
  • 2020-03-24
  • 2015-07-17
  • 2015-09-20
  • 2018-09-06
  • 2019-10-30
  • 2020-06-23
  • 2020-08-14
  • 2020-09-08
相关资源
最近更新 更多