运行 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.
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:
# 拉取基础镜像 来自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
我猜你的docker-entrypoint.sh
没有执行权限(x
)。但 docker-compose.yml 也并不是 docker-entrypoint.sh 的最佳位置。这是覆盖设置,请参阅 entrypoint 。默认值应位于 Dockerfile
中。试试这个:
将其添加到 Dockerfile
的末尾
COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
docker-entrypoint.sh
应与 Dockerfile
位于同一文件夹中(或调整 COPY
路径)。从 docker-compose.yml
中删除 entrypoint
行。重建,重新运行。
关于Docker compose 和 docker-entrypoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52942913/