gpt4 book ai didi

python - docker-compose stop 从数据库中的表中删除数据

转载 作者:行者123 更新时间:2023-12-02 18:26:54 26 4
gpt4 key购买 nike

每次我执行“docker-compose restart”时,我在数据库中输入的初始数据都会自动删除。我看到数据被添加到表中,但是一旦我重新启动或停止 docker 并再次启动它,它就不再存在了。空表确实存在,它只是被删除的数据。任何帮助将不胜感激。

docker-compose.yml

version: '3'

services:
app:
build: .
command: python app/manage.py runserver 0.0.0.0:8000
volumes:
- ./:/app/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- db

db:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=cmpt_user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=cmpt_project
volumes:
postgres_data:

docker 文件

# pull official base image
FROM python:3.8.0-alpine
RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev

# set work directory
WORKDIR /app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt

# copy entrypoint.sh
COPY ./entrypoint.sh /app/entrypoint.sh

# copy project
COPY . /app/

# run entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]

最佳答案

docker-compose.yml 在我看来不错:

  • 您设置了一个持久卷,默认存储在 /var/lib/docker/volumes/<project>_postgres_data
  • 默认<project> docker-compose.yml 是文件夹的名称居住
  • 将存活(我已验证)docker-compose downdocker-compose restart .看 https://docs.docker.com/compose/reference/restart/

不提交数据库事务

也许 python 程序打开了一个数据库事务,将数据插入到表中,但之后没有提交事务。查看有关事务管理、自动提交模式、回滚等的更多信息。

您是否介意提供更多信息,说明您如何验证您的数据确实在表中?

命名卷干扰 (MacOS)

也许命名卷干扰了您正在使用的 postgres 图像创建的匿名卷。请修改你的docker-compose.yaml 命名卷和环境:

version: '3'

services:
app:
build: .
command: python app/manage.py runserver 0.0.0.0:8000
volumes:
- ./:/app/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- db
db:
image: postgres
volumes:
- postgres_data:/var/postgres_data #<----- modify
environment:
- PGDATA: /var/postgres_data #<----- add
- POSTGRES_USER=cmpt_user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=cmpt_project
volumes:
postgres_data:

来源:https://github.com/docker/compose/issues/5012

关于python - docker-compose stop 从数据库中的表中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60119388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com