When running docker-compose up --build I am always running into this error message. Anyone knows what I am doing wrong with the docker-entrypoint file?
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.
docker-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
Dockerfile:
# Pull base image FROM 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
"./docker-entrypoint.sh": permission denied": unknown
I would guess your docker-entrypoint.sh
doesn't have execute permissions (x
). But also docker-compose.yml
is not really the best place for the docker-entrypoint.sh
. It's the override setting, see entrypoint. The default should go in the Dockerfile
. Try this:
Add this to the end of your Dockerfile
COPY --chmod=0755 ./docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
The docker-entrypoint.sh
should be in the same folder as the Dockerfile
(or adjust the COPY
path). Remove the entrypoint
line from your docker-compose.yml
. Rebuild, rerun.