嘗試從 docker django 應用程式環境備份和恢復我的資料庫時,我遇到了這個錯誤: 錯誤
我首先執行此命令來備份我的整個資料庫
docker exec -t project_final-db-1 pg_dumpall -c -U fred2020 > ./db/dump.sql
然后嘗試使用此命令重新生成
cat dump.sql | docker exec -i --user fred2020 catsitting-db-1 psql -U fred2020 -d postgres
我有兩個容器,一個用于名為catsitting-web-1 的django 應用程式,另一個用于名為catsitting-db-1 的postgresql
我不明白為什么它給了我那個錯誤,我的資料庫用戶與我在 dockerfile 上指定的相同......
任何線索?出于目的幫助,這是我的 docker 檔案配置:
檔案
FROM python:3.9
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
RUN pip install Pillow
COPY . /code/
docker-compose.yml
version: "3.9"
services:
db:
image: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=fred2020
- POSTGRES_PASSWORD=p*******DD
expose:
- "5432"
ports:
- 5432:5432
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
要求.txt
Django>=3.0,<4.0
psycopg2-binary>=2.8
Pillow==8.1.0
這就是我從 notebook1 遷移到 notebook2 的程序:
安裝運行命令列進入根目錄并運行:
git clone https://github.com/XXXXXXXXXXXXXXXX
在命令列中進入根目錄:
cd catsitting
在同一個命令列視窗中,運行:
docker-compose build --no-cache
In the command line window you need first to migrate the database for Django, run :
docker-compose run web python manage.py migrate
In the command line window then you need to apply the migrations, run :
docker-compose run web python manage.py makemigrations
In the command line window then you need to import database, run :
cat dump.sql | docker exec -i --user fred2020 catsitting-db-1 psql -U fred2020 -d postgres
(for dumping my DB I used docker exec -t project_final-db-1 pg_dumpall -c -U fred2020 > ./db/dump.sql)
You can now run:
docker-compose up
Is there something I get wrong ?
uj5u.com熱心網友回復:
我解決了!這是我的 docker postgresql 中 pg_hba.conf 配置錯誤的問題,我將值從 scram-sha-256 更改為 md5,現在可以使用當前資料庫顯示我的 webapp 了!
你知道我在構建 docker 環境時如何指定 md5 嗎?默認情況下,它會放置 scram-sha-256
uj5u.com熱心網友回復:
你知道為什么當我默認在容器中的新環境中恢復我的轉儲時 pg_hba.conf 將身份驗證方法設定為 scram-sha-256 并進行我的連接作業我需要編輯該檔案并放置身份驗證方法設定為 md5 ?
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
uj5u.com熱心網友回復:
好的,對不起,我找到了解決方案。我把那行放在我的 docker-compose.yml 中:
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368178.html
標籤:python django postgresql docker
下一篇:docker其中一個容器立即關閉
