django - docker-compose 与 Dockerfile 入口点脚本冲突

标签 django docker docker-compose

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

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

/docker-entrypoint.sh: ignoring /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 \
    "$@"

docker-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 .成功构建镜像,但尝试使用 docker-compose up 启动镜像时我收到以下错误 exec: gunicorn: not found正如上面提到的OP。基于 this thread我可以解决运行 docker-compose build 的问题.所以总结以下3条命令应该可以解决问题:

  • docker build .
  • docker-compose build
  • docker-compose up

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

    关于django - docker-compose 与 Dockerfile 入口点脚本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37393459/

    相关文章:

    mongodb - 调用包裹在docker中的mongodump

    docker - Nginx反向代理不重定向?

    docker - 端口映射不适用于一项服务

    python - 现有 Django 项目中的语法错误

    Python (tastypie) - POST 请求错误,返回 "error"dict

    python - EmailMultiAlternatives 无法建立连接,因为目标机器主动拒绝它

    php - 即使完全删除,Docker容器仍会下载并执行

    python - 在Django上实现多层角色

    docker - 如何将 Vagrantfile 转换为 Dockerfile

    amazon-web-services - 用于构建 Java 应用程序、Docker 镜像并将其推送到 AWS ECR 的 Bitbucket 管道?