HerokuのDBをDockerにリストアする

Shunsuke Sawada

久々にメモ。
前やったのに忘れていしまっていた。

docker-compose.ymlの例

yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
version: '2'
services:

  app:
    build: ./
    container_name: my_app
    environment:
      RAILS_ENV: 'development'
    ports:
      - '3000:3000'
    volumes:
      - my-app-sync:/var/www:rw
    volumes_from:
      - my_app_datastore
    links:
      - db
    # For pry
    # https://github.com/docker/compose/issues/423#issuecomment-141995398
    tty: true
    stdin_open: true

  db:
    build: containers/postgres
    container_name: my_app_db
    environment:
      POSTGRES_PASSWORD: 'password'
    ports:
      - '5432:5432'
    volumes:
      - my-app-sync:/var/www:rw
    volumes_from:
      - my_app_datastore

  datastore:
    build: containers/datastore
    container_name: my_app_datastore
    volumes:
      - /datastore

# For docker-sync
volumes:
  my-app-sync:
    external: true

bash
1
2
3
4
5
6
$ docker-compose start
$ docker-compose run db pg_restore --verbose --clean --no-acl --no-owner -h db -U postgres -d my_db /var/www/your_dump_file

=> password きかれる
postgres公式のimageのままなら password なはず。
-U postgres は `ss` でないので、タイポに気をつけて。

DBのコンテナで docker-sync のボリュームを指定している。
でないとファイルを参照できない。

yml
1
2
    volumes:
      - my-app-sync:/var/www:rw

参考

https://medium.com/@tomsowerby/mysql-backup-and-restore-in-docker-fcc07137c757#.5e1v8rrjk

Shunsuke Sawada

おすすめの記事

React Native で Android のエミュレーターが立ち上がらない場合
Dockerをアップデートしたら動かなくなった / Dockerにログインできない
HerokuのDBをローカルにリストアしようとした時のバージョンミスマッチ