hatunina’s blog

メモと日記です

docker for windowsでのpostgres永続化

やりたいこと

docker for windowsでdocker-composeを使ってpostgresのデータを永続化したい。
バージョンは以下。OSはWin10です。

f:id:hatunina:20181015202318p:plain

方法

下記コマンドで永続化のためのデータコンテナ作成

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 コンテナへ永続化される。

参考

ishikawa-pro.hatenablog.com

qiita.com

github.com