##状況
Dockerのデータベースの情報を他のPCで共有しようと思い、データボリュームのバックアップ→リストアを試みました。
バックアップ時には数十MBのtarファイルが出力され、リストア時にも特にエラーメッセージは表示されないように見受けられました。
しかし該当のDBにRailsからアクセスすることができません。
TablePlusというDBクライアントからもアクセスができない状態です。
##作業の流れ
#コンテナ名を確認 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b6a79314721 sample-app_web "/bin/sh -c 'rm -f t…" 5 minutes ago Up 5 minutes 0.0.0.0:3000->3000/tcp sample-app_web_1 2ed21c2aac12 postgres "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:5434->5432/tcp sample-app_db_1
terminal
1#バックアップ 2$ docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar cvf /backup/backup.tar /var/lib/postgresql/data
terminal
1#コンテナとデータボリュームを削除→再作成 2$ docker-compose down --volumes 3$ docker-compose up -d
terminal
1#データボリュームをリストア 2$ docker run --rm --volumes-from sample-app_db_1 -v `pwd`:/backup busybox tar xvf /backup/backup.tar
##環境
macOS Mojave 10.14.5
Docker Desktop 2.1.0.4
Ruby 2.6.5
Rails 6.0.2
yml
1#docker-compose.yml 2version: '3' 3services: 4 db: 5 image: postgres 6 volumes: 7 - psgl_data:/var/lib/postgresql/data 8 environment: 9 POSTGRES_USER: root 10 POSTGRES_PASSWORD: password 11 ports: 12 - 5434:5432 13 web: 14 build: 15 context: . 16 dockerfile: Dockerfile 17 command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 18 tty: true 19 stdin_open: true 20 depends_on: 21 - db 22 ports: 23 - "3000:3000" 24 volumes: 25 - .:/app_name 26volumes: 27 psgl_data:
Dockerfile
1FROM ruby:2.6.5 2 3RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 4 5RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ 6curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 7echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 8apt-get update && apt-get install -y yarn 9 10RUN mkdir /app_name 11ENV APP_ROOT /app_name 12WORKDIR $APP_ROOT 13 14ADD ./Gemfile $APP_ROOT/Gemfile 15ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock 16 17RUN gem install bundler 18RUN bundle install 19ADD . $APP_ROOT
yml
1# config/database.yml 2default: &default 3 adapter: postgresql 4 encoding: unicode 5 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 6 host: db 7 username: root 8 password: password 9 10development: 11 <<: *default 12 database: sample-app_development
回答1件
あなたの回答
tips
プレビュー