私は docker を初めて使用し、docker compose を使用してプロジェクトを開発しています。ドキュメントから、データを永続的に保つためにデータのみのコンテナーを使用する必要があることを学びましたが、docker-compose を使用してそうすることができません。私が行うたびにdocker-compose down、データベースからデータが削除されますが、実行して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 <tom@offermann.us>
# Create data directory
RUN mkdir /data
# Create /data volume
VOLUME /data
これを試しましたが、docker-compose down を実行すると、データが失われます。コメント行を確認できるように、data_container に名前を付けてみましたが、次のエラーが表示されました。
ERROR: Named volume "dataVolume:/data:rw" is used in service "data_container" but no declaration was found in the volumes section.
だから今私がやっていることは、コンテナという名前だけのスタンドアロンデータを作成し、それをvolumes_fromdbの値に入れることです。正常に機能し、実行した後でもデータは削除されませんでしたdocker-compose down。
私のクエリ:
を使用してデータベースのデータを格納できるコンテナを作成し、
docker-composeそれらを適切に使用するための最良のアプローチは何ですか?私の意識は、私が選択したアプローチ、つまりスタンドアロンのデータ コンテナーを作成するアプローチについて同意していません。何かご意見は?