使用Nodev4.4.7和Python3创建Docker容器

时间:2016-11-29 17:54:29

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

尝试创建一个包含Python3和Node v4.4.7的docker镜像,这样我就可以将它用作需要Python和那个版本的Node的项目的容器。

# 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

2 个答案:

答案 0 :(得分:1)

在Github上找到了具有Python和Node的解决方案。没有运气的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"]

答案 1 :(得分:0)

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/*

所需的Node版本。可以删除yarn(替代nmp的依赖管理),并且在需要时可以删除)。