我想构建我的图像,这是我的Dockerfile:
FROM ubuntu:16.04
MAINTAINER 'hulei886@aliyun.com'
ENV PHANTOMJS_VERSION 2.1.1
ENV PYTHON_VERSION 3.6.3
# install python3.6.3
RUN apt-get update \
&& apt-get install -y build-essential \
git \
curl \
libssl-dev \
zlib1g-dev \
libncurses5-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
&& apt-get install -y libgdbm-dev \
libdb5.3-dev \
libbz2-dev \
libexpat1-dev \
liblzma-dev \
tk-dev \
&& cd ~ \
&& git clone https://github.com/pyenv/pyenv.git .pyenv \
&& echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc \
&& echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc \
&& echo 'eval "$(pyenv init -)"' >> ~/.bashrc \
&& source ~/.bashrc \
&& curl -L https://raw.githubusercontent.com/yyuu/pyenv- installer/master/bin/pyenv-installer | bash \
&& pyenv install PYTHON_VERSION \
&& pyenv global PYTHON_VERSION \
&& cd .. \
CMD [python]
但是当我运行“docker build。-t [mytag]”时, git clone命令没有克隆任何东西,这里是截图:
我需要帮助解决这个问题,谢谢!
答案 0 :(得分:2)
错误信息非常清楚:
/bin/sh: 1: source: not found
git clone
但source
外壳中/bin/sh
没问题。您需要改为使用.
(点)命令。
编写Dockerfile时,最好使用/bin/sh
shell测试容器中的命令。
在您的情况下,在source
错误之后,还有其他错误:
$
前缀cd ~
:从结果图片运行容器时,只有WORKDIR
instruction才会更改当前目录CMD
指令错误地插入RUN
指令固定版本为:
[...]
&& git clone https://github.com/pyenv/pyenv.git .pyenv \
&& echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc \
&& echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc \
&& echo 'eval "$(pyenv init -)"' >> ~/.bashrc \
&& . ~/.bashrc \
&& curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash \
&& pyenv install $PYTHON_VERSION \
&& pyenv global $PYTHON_VERSION
WORKDIR /root
CMD [python]
答案 1 :(得分:0)
你必须在bash中使用source替代品。你可以做点什么
。 somefile
而不是
source somefile