Docker拒绝运行bash

我有以下docker设置:

python27.Dockerfile

FROM python:2.7 COPY ./entrypoint.sh /entrypoint.sh RUN mkdir /src RUN apt-get update && apt-get install -y bash libmysqlclient-dev python-pip build-essential && pip install virtualenv ENTRYPOINT ["/entrypoint.sh"] EXPOSE 8000 WORKDIR /src CMD source /src/env/bin/activate && python /src/manage.py runserver 

entrypoint.sh

 #!/bin/bash # some code here... # some code here... # some code here... exec "$@" 

每当我尝试运行我的docker容器,我得到python27 | /bin/sh: 1: source: not found python27 | /bin/sh: 1: source: not found

我明白这个错误来自这个命令是用sh而不是bash运行的,但是我不明白为什么会发生这种情况,因为我在入口点的顶部有正确的shebang。

任何想法为什么会发生这种情况,我该如何解决?

问题在于,对于CMD,您使用的是使用/ bin / sh的shell表单 ,而/ src / env / bin / activate可能包含一个“source”命令,而在POSIX / bin / sh等价的内build就是这样)。

您必须使用方括号使用CMD的exec表单

 CMD ["/bin/bash", "-c", "source /src/env/bin/activate && python /src/manage.py runserver"] 

更多细节在: