我是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_from
db 的值中。它工作正常,即使这样做也没有删除任何数据docker-compose down
。
我的查询:
使容器能够docker-compose
使用并正确使用数据库数据的最佳方法是什么?
我的意识不同意我选择的方法,即创建一个独立的数据容器。有什么想法吗?
docker-compose down
做以下
停止容器并删除由up创建的容器,网络,卷和映像
因此,您所遇到的行为是可以预期的。
docker-compose stop
用于关闭使用docker-compose文件创建的容器,但不删除其卷。
其次,您不需要data-container
docker compose版本2中的模式。所以删除它,然后使用
db:
...
volumes:
- /var/lib/postgresql/data
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句