試圖創建一個具有Python3和Node v4.4.7的Docker鏡像,以便我可以將它用作需要Python和該版本Node的項目的容器。使用Nodev4.4.7和Python3創建Docker容器
# 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 .
它snafus在節點安裝期間與 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個CMD在Dockerfile,只有最後一個將被使用。也許它應該是RUN而不是?閱讀http://stackoverflow.com/questions/21553353/what-is-the-difference-between-cmd-and-entrypoint-in-a-dockerfile – user2915097
謝謝。這可能是。結束了使用不同版本的Python和幾個MODS,它的工作。 –