【问题标题】:how do i setup only python 2.7 in docker container?如何在 docker 容器中仅设置 python 2.7?
【发布时间】:2019-04-11 05:10:50
【问题描述】:

我有节点应用程序,在一个用例中,我使用 python-shell 从节点调用 python 脚本。我正在尝试在 docker 上设置这个应用程序,我的 Dockerfile 看起来像这样

FROM debian:latest
# replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# update the repository sources list
# and install dependencies
RUN apt-get update \
&& apt-get install -y curl \
&& apt-get -y autoclean
# nvm environment variables
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 10.15.3
# install nvm
# https://github.com/creationix/nvm#install-script
RUN curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bash
# install node and npm
RUN source $NVM_DIR/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default
# add node and npm to path so the commands are available
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
# confirm installation
RUN node -v
RUN npm -v
RUN apt-get -y install python2.7
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","run","start"]

在构建并运行此容器后,当我尝试调用从节点调用 python 脚本的用例时出现此错误。

null
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: spawn /usr/lib/python2.7 EACCES
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:246:12)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
npm ERR! code ELIFECYCLE
npm ERR! errno 1

【问题讨论】:

  • 请注意,与答案建议python 图像的方式相同,还有a standard node image。在 Dockerfile 中使用像 nvm 这样的版本管理器会增加不必要的复杂性。考虑使用 POSIX . 内置到“源”文件而不是特定于 bash 的 source 扩展。

标签: python node.js docker dockerfile


【解决方案1】:

你可以使用python基础镜像

FROM python:2.7

这个基础镜像已经预配置了 python,你不需要单独安装 python。希望对您有所帮助。

这是可用图片的list

如需快速参考,请查看 https://blog.realkinetic.com/building-minimal-docker-containers-for-python-applications-37d0272c52f3

【讨论】:

  • 你确定图像名称是 PYTHON2.7:latest 吗?因为我收到一个错误,它应该是小写,甚至小写都不起作用。 pull access denied for python2.7, the repository does not exist or may require 'docker login'
  • 更新了答案hub.docker.com/_/python/?tab=tags&page=2,你可以找到图片列表。
【解决方案2】:

您可以使用基础镜像 "FROM python:2.7" 。

FROM python:2.7

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./your-daemon-or-script.py" ]

(documentation link)please find some examples here

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2014-12-28
    • 2021-05-16
    • 2021-04-07
    • 2021-03-29
    • 2022-11-15
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多