Dockerに関しては、私はまったくの初心者です。そして、私はそれをダミープロジェクトで理解しようとしています。 Djangoプロジェクトがあり、私のDockerfile
はDjangoプロジェクトのルートフォルダにあります。そして私のdocker-compose.yml
ファイルは、Djangoプロジェクトフォルダーとその他の構成ファイルを含むトップルートフォルダーの下にあります。
俺の docker-compose.yml
version: '3'
services:
db:
image: postgres
container_name: dummy_project_postgres
volumes:
- ./data/db:/var/lib/postgresql/data
event_planner:
build: ./dummy_project
container_name: dummy_project
volumes:
- .:/web
ports:
- "8000:8000"
depends_on:
- db
links:
- db:postgres
と私のDockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /web
WORKDIR /web
ADD requirements.txt /web/
RUN pip install -r requirements.txt
ADD . /web/
次のコマンドを実行しようとしています
# stop and remove the existing containers
docker-compose stop
docker-compose rm -f
# up and run the container
docker-compose build
docker-compose up -d
docker-compose exec dummy_project bash
私がする時 docker-compose up -d
、このエラーが表示されます。
docker-compose up -d
dummy_project_postgres is up-to-date
Starting dummy_project ... done
warning: could not open directory 'data/db/': Permission denied
この質問は以前に尋ねられたのはわかっていますが、必要な解決策が十分に得られず、何時間も行き詰まっています。
編集:最上位のフォルダの下にあるすべてのフォルダに対するすべての権限があります
EDIT2:Sudo docker-compose up -d
も同じエラーになります。
マウントしようとしています./data/db
/var/lib/postgresql/data
そして非特権ユーザーでdocker-composeを実行しています。
したがって、2つの可能性があります。
最も簡単な解決策は、特権ユーザー(root)でdocker-composeを実行することですが、それを実行したくない場合は、次のように試すことができます。
/ var/lib/postgresql/data権限をどのように付与できますか?次の行を読みます。
まず、/ var/lib/postgresql/dataはpostgre dockerによって自動生成されるため、これらの権限を変更する新しいDockerfileを定義する必要があります。その後、この新しいDockerfileを使用するようにdocker-composeも変更する必要があります。
./ docker-compose.yml
version: '3'
services:
db:
build:
context: ./mypostgres
dockerfile: Dockerfile_mypostgres
container_name: dummy_project_postgres
volumes:
- ./data/db:/var/lib/postgresql/data
event_planner:
build: ./dumy_project
container_name: dummy_project
volumes:
- .:/web
ports:
- "8000:8000"
depends_on:
- db
links:
- db:postgres
./ dumy_project/Dockerfile->変更なし
./ mypostgres/Dockerfile_mypostgres
FROM postgres
RUN mkdir -p /var/lib/postgresql/data
RUN chmod -R 777 /var/lib/postresql/data
ENTRYPOINT docker-entrypoint.sh