【问题标题】:docker-compose conflicts with Dokerfile entry-point scriptdocker-compose 与 Dockerfile 入口点脚本冲突
【发布时间】:2016-05-23 14:16:05
【问题描述】:

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

Docker 退出代码错误 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 \
    "$@"

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

【问题讨论】:

  • 您使用的是什么操作系统?这是在虚拟机中吗?你正在运行什么命令来创建图像?
  • 操作系统:Ubuntu 14.04,命令:docker-compose build
  • 你确定你不只是想做docker build . 吗?
  • 当我 run docker build . 时,构建通过,但是当我运行 docker-compose up 运行项目时,它会大大执行入口脚本,但无法识别 gunicorn,尽管我可以在构建日志中看到安装。我得到:gunicorn: command not found

标签: django docker docker-compose


【解决方案1】:

在本地重现问题后:docker build . 成功构建映像,但是当尝试使用docker-compose up 启动映像时,我收到以下错误exec: gunicorn: not found,如上所述。基于this thread 我可以解决运行docker-compose build 的问题。所以总结以下3个命令应该可以解决问题:

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

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

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多