【发布时间】: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