При запуске docker-compose up --build я всегда сталкиваюсь с этим сообщением об ошибке. Кто-нибудь знает, что я делаю не так с файлом docker-entrypoint?

ERROR: for 986991ccdfe1_ubercoach_web_1  Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./docker-entrypoint.sh\": permission denied": unknown

ERROR: for web  Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./docker-entrypoint.sh\": permission denied": unknown
ERROR: Encountered errors while bringing up the project.

Докер - Compose :

version: '3'

services:
  db:
    image: postgres
    ports:
      - "5432:5432"
  web:
    build: .
    entrypoint: ./docker-entrypoint.sh
    env_file: .env
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Докерфил:

# Извлечь базовое изображение ИЗ python: 3

# Set environment varibles
ENV PYTHONUNBUFFERED 1

# Set work directory
RUN mkdir /code
WORKDIR /code

# Install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /code/Pipfile
RUN pipenv install --deploy --system --skip-lock --dev

# Copy project
COPY . /code/

Docker-entrypoint.sh

#!/bin/bash

# Collect static files
echo "Collect static files"
python manage.py collectstatic --noinput

# Apply database migrations
echo "Apply database migrations"
python manage.py migrate

# Start server
echo "Starting server"
python manage.py runserver 0.0.0.0:8000
6
Joey Coder 23 Окт 2018 в 09:56

2 ответа

Лучший ответ

\ "./ docker-entrypoint.sh \": в разрешении отказано ": неизвестно

Я предполагаю, что у вашего docker-entrypoint.sh нет прав на выполнение (x). Но также docker-compose.yml - не лучшее место для docker-entrypoint.sh. Это параметр переопределения, см. точку входа. Значение по умолчанию должно быть в Dockerfile. Попробуй это:

Добавьте это в конец вашего Dockerfile

COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh должен находиться в той же папке, что и Dockerfile (или измените путь COPY). Удалите строку entrypoint со своего docker-compose.yml. Восстановить, перезапустить.

7
hjsimpson 23 Окт 2018 в 07:36

Я уделил этому вопросу много времени. проблема в том, что из-за громкости в веб-службе . У меня проблема, потому что я был докер-машиной для развертывания своего приложения. Docker использует том, которого нет на удаленном компьютере. Выполните следующее, чтобы стереть контейнеры и тома, что является простым способом избавиться от проблемы.

docker-compose down -v

NB : будьте осторожны с приведенной выше командой. Потому что он удаляет весь том, а значит, и все данные, которые у вас есть на них.

Решение, которое я использую, состоит из докеров другого файла докеров и не добавляет объема веб-сервису.

0
thierno 19 Ноя 2019 в 14:46
52942913