【问题标题】:Create Docker container with Nodev4.4.7 and Python3使用 Nodev4.4.7 和 Python3 创建 Docker 容器
【发布时间】:2016-11-29 17:54:28
【问题描述】:

尝试创建一个包含 Python3 和 Node v4.4.7 的 docker 映像,以便我可以将其用作需要 Python 和该版本 Node.js 的项目的容器。

# Pull base image.
FROM python:3-onbuild

CMD [ "python", "./hello.py" ]
# Install Node.js
RUN \
cd /tmp && \
wget http://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz && \
tar xvzf node-v4.4.7.tar.gz && \
rm -f node-v4.4.7.tar.gz && \
cd node-v* && \
./configure && \
CXX="g++ -Wno-unused-local-typedefs" make && \
CXX="g++ -Wno-unused-local-typedefs" make install && \
cd /tmp && \
rm -rf /tmp/node-v* && \
npm install -g npm && \
print '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >>   /root/.bashrc

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["bash"]

当我第一次尝试时,它抱怨没有运行 python 脚本,所以添加了一个基本的 python 文件:hello.py 只有这个:

print "Hello, Python!"

然后它抱怨没有requirements.txt 文件所以添加了一个空的requirements.txt

现在,当我运行 docker build -t isaacweathersnet/sampledockerimage . 时,它会在节点安装期间出现混乱 node-v4.4.0/benchmark/arrays/zero-int.js File "./configure", line 446 ''' ^ SyntaxError: Missing parentheses in call to 'print' The command '/bin/sh -c cd /tmp && wget http://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz && tar xvzf node-v4.4.7.tar.gz && rm -f node-v4.4.7.tar.gz && cd node-v* && ./configure && CXX="g++ -Wno-unused-local-typedefs" make && CXX="g++ -Wno-unused-local-typedefs" make install && cd /tmp && rm -rf /tmp/node-v* && npm install -g npm && print '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >> /root/.bashrc' returned a non-zero code: 1

【问题讨论】:

  • 你的 Dockerfile 中有 2 个 CMD,只会使用最后一个。也许它应该是 RUN 代替?阅读stackoverflow.com/questions/21553353/…
  • 谢谢。大概就是这样。最终使用了不同版本的 Python 和一些 mods,并且成功了。

标签: python node.js docker docker-compose dockerfile


【解决方案1】:

在 Github 上找到了包含 Python 和 Node.js 的解决方案。 Python 3+ 不走运,但在 2.7 上运行良好 https://github.com/nsdont/python-node/blob/master/Dockerfile

FROM python:2.7

RUN \
cd /tmp && \
wget http://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz && \
tar xvzf node-v4.4.7.tar.gz && \
rm -f node-v4.4.7.tar.gz && \
cd node-v* && \
./configure && \
CXX="g++ -Wno-unused-local-typedefs" make && \
CXX="g++ -Wno-unused-local-typedefs" make install && \
cd /tmp && \
rm -rf /tmp/node-v* && \
npm install -g npm && \
echo -e '\n# Node.js\nexport PATH="node_modules/.bin:$PATH"' >> /root/.bashrc

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["bash"]

【讨论】:

    【解决方案2】:

    nodejs-pythonpython-nodejs(建立在nodejy-python 之上)。值得一看。

    python-nodejs 提供 Node 10.xnpm 6.xyarn stablePython latestpip latestpipenv latest。使用的版本应该可以根据您的版本需要进行调整。以Dockerfile为基础,调整RUN部分

    RUN \
      echo "deb https://deb.nodesource.com/node_10.x stretch main" > /etc/apt/sources.list.d/nodesource.list && \
      wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
      echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list && \
      wget -qO- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
      apt-get update && \
      apt-get install -yqq nodejs yarn && \
      pip install -U pip && pip install pipenv && \
      npm i -g npm@^6 && \
    rm -rf /var/lib/apt/lists/*
    

    到您需要的节点版本。 yarnnmp 的依赖管理替代品)和如果你需要纱线)部分可以被删除。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多