docker for windowsでのpostgres永続化
やりたいこと
docker for windowsでdocker-composeを使ってpostgresのデータを永続化したい。
バージョンは以下。OSはWin10です。
方法
下記コマンドで永続化のためのデータコンテナ作成
docker create --name dbdata postgres
docker-compose.ymlにvolumeを追記しトップレベルでデータコンテナを指定する。
例えば redash
だとこんな感じ。
version: '2' services: server: image: redash/redash:latest command: server depends_on: - postgres - redis ports: - "5000:5000" environment: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: veryverysecret REDASH_WEB_WORKERS: 4 restart: always worker: image: redash/redash:latest command: scheduler environment: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" QUEUES: "queries,scheduled_queries,celery" WORKERS_COUNT: 2 restart: always redis: image: redis:3.0-alpine restart: always postgres: image: postgres:9.5.6-alpine volumes: - dbdata:/var/lib/postgresql/data restart: always nginx: image: redash/nginx:latest ports: - "80:80" depends_on: - server links: - server:redash restart: always volumes: dbdata:
こうしておけば docker-compose up
, docker-compose down
を繰り返してもpostgresのデータは dbdata
コンテナへ永続化される。