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

时间:2016-05-23 14:16:05

标签: django docker docker-compose

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

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

  

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

您可以在下面找到相应的配置文件:

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

1 个答案:

答案 0 :(得分:1)

在本地重现问题后:docker build .成功构建图像,但在尝试使用docker-compose up启动图像时,我得到了以下错误exec: gunicorn: not found作为上述OP。根据{{​​3}},我可以解决运行docker-compose build的问题。因此,总结以下3个命令应解决问题:

  1. docker build .
  2. docker-compose build
  3. docker-compose up
  4. 尽管这解决了我的问题,我仍然在这里感到困惑,为什么我需要运行构建两次。我的意思是它应该在某处出错,因为据我所知,docker-compose build应该做与docker build .相同的工作。

相关问题