1. ホーム
  2. docker

[解決済み] Docker composeとdocker-entrypoint

2022-03-16 02:45:40

質問

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です。

# ベースイメージの取得 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 には実行権限がありません ( 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 . リビルド、再実行。