docker-compose与Dokerfile入口点脚本冲突

我试图用我的Django应用程序创build一个Docker镜像,但不幸的是我遇到了麻烦,试图运行我的入口点脚本。

Docker退出eith代码错误127并显示以下消息:

/docker-entrypoint.sh:忽略/docker-entrypoint-initdb.d/*

您可以在相应的configuration文件下面find:

Dockerfile

FROM python:2.7 ENV PYTHONUNBUFFERED 1 RUN mkdir -p /web/src ADD . /web/src WORKDIR /web/src RUN pip install -U pip RUN pip install -r requirements.txt -U RUN chmod u+x docker-entrypoint.sh ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh"] 

docker-entrypoint.sh

 #!/bin/bash python manage.py migrate python manage.py collectstatic --noinput touch /srv/logs/gunicorn.log touch /srv/logs/access.log tail -n 0 -f /srv/logs/*.log & echo Starting Gunicorn... exec gunicorn config.wsgi:application \ --name django_server \ --bind 0.0.0.0:8000 \ --workers 3 \ --log-level=info \ --log-file=/srv/logs/gunicorn.log \ --access-logfile=/srv/logs/access.log \ "$@" 

泊坞窗,compose.yml

 version: '2.0' services: db: container_name: db_server image: postgres web: container_name: django_server build: . volumes: - .:/web/src environment: - SECRET_KEY=k3jghf1jk%$JH^1GJH5@YUTR@!MBMB<5=7DXXG)JHSX= - PGDATABASE=postgres - PGUSER=postgres - PGPASSWORD='' - PGHOST=db - DJANGO_ENV=development command: python manage.py runserver 0.0.0.0:8000 ports: - "8000:8000" links: - db 

在本地重现问题之后: docker build . build立图像成功,但是当试图使用docker-compose up开始图像docker-compose up我得到了以下错误exec: gunicorn: not found上面提到的OP。 基于这个线程,我可以解决运行docker-compose build的问题。 所以总结下面三个命令应该可以解决这个问题:

  1. docker build .
  2. docker-compose build
  3. docker-compose up

尽pipe这解决了我的问题,我仍然困惑在这里,为什么我需要运行构build两次。 我的意思是它应该是某个地方出了问题,因为就我所知, docker-compose build应该和docker build .做同样的工作docker build .