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