Docker Compose-如何存储数据库数据?

Salman Ghauri:

我是docker的新手,正在使用docker compose开发项目。从文档中我了解到,我应该使用仅数据容器来保持数据持久性,但是我无法使用docker-compose做到这一点。每当我这样做时,docker-compose down都会从db中删除数据,但是这样做docker-compose stop并不会删除数据。可能是因为我没有创建命名数据卷,并且docker-compose down几乎没有删除所有容器。所以我尝试命名容器,但是它给我抛出了错误。请看一下我的yml文件:

version: '2'
services: 
   data_container:
     build: ./data
     #volumes:
     #  - dataVolume:/data
  db:
    build: ./db
    ports:
      - "5445:5432"
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_DB=postgres
    #   - PGDATA=/var/lib/postgresql/data/pgdata
    volumes_from:
     # - container:db_bus
       - data_container
  geoserver:
    build: ./geoserver
    depends_on:
      - db
    ports:
      - "8004:8080"
    volumes:
      - ./geoserver/data:/opt/geoserverdata_dir

  web:
    build: ./web
    volumes:
      - ./web:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    command: python manage.py runserver 0.0.0.0:8000

  nginx:
    build: ./nginx
    ports:
      - "83:80"
    depends_on:
      - web

data_container的Docker文件为:

FROM stackbrew/busybox:latest
MAINTAINER Tom Offermann <[email protected]>

# Create data directory
RUN mkdir /data

# Create /data volume
VOLUME /data

我尝试了这个,但是通过做docker-compose下来,数据丢失了。我试图命名data_container,因为您可以看到注释行,这引发了我这个错误:

ERROR: Named volume "dataVolume:/data:rw" is used in service "data_container" but no declaration was found in the volumes section.

所以现在我正在做的是创建一个仅命名为container的独立数据,并将其放入volumes_fromdb 值中。它工作正常,即使这样做也没有删除任何数据docker-compose down

我的查询:

  • 使容器能够docker-compose使用并正确使用数据库数据的最佳方法是什么

  • 我的意识不同意我选择的方法,即创建一个独立的数据容器。有什么想法吗?

读:

docker-compose down

做以下

停止容器并删除由up创建的容器,网络,卷和映像

因此,您所遇到的行为是可以预期的。

docker-compose stop用于关闭使用docker-compose文件创建的容器,但不删除其卷。

其次,您不需要data-containerdocker compose版本2中模式。所以删除它,然后使用

  db:
    ...
    volumes:
       - /var/lib/postgresql/data

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用docker-compose播种mongo数据库?

在 docker-compose 中从卷重用 postgresql 数据库

重新启动Docker Compose并更新数据库

在Docker Compose中初始化Postgres数据库

使用 docker compose 将 API 连接到数据库

在 Docker Compose 中连接到数据库的问题

docker-compose-无法连接到MySQL数据库

docker-compose具有多个数据库

Docker Compose无法连接到数据库

MongoDB数据库连接错误-Docker Compose

Docker-compose api 和数据库配置

与数据库连接-docker-compose up

Docker-compose 数据库表重置

使用Docker-Compose时如何执行Django数据库迁移?

使用docker-compose时如何创建和填充wso2数据库表?

如何保留我的数据库,但更改docker-compose中的代码?

docker-compose时如何创建postgres数据库并运行迁移

在使用docker-compose启动webapp之前如何填充Elasticsearch数据库?

如何解释 docker compose 文件中的数据库卷条目

如何从主机连接到数据库-在docker compose下运行的容器中的SQL Server

如何在Docker Compose中初始化MySql数据库

如何在docker-compose中访问Postgres数据库

如何完全销毁docker-compose创建的Mongo数据库?

如何在docker-compose文件中初始化PSQL数据库?

如何在Windows 10上设置docker-compose初始化MySQL数据库?

Python 应用程序如何使用 Docker-compose 查找 Postgres 数据库

如何使用docker-compose.yml为在docker中运行的应用指定docker容器数据库?

如何使用docker-compose存储MongoDB数据

docker - 如何从 env.ini 文件外部为 docker-compose.yml 文件设置环境数据库?