質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2690閲覧

postgresqlのversionを一致させる方法

field_flat

総合スコア17

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/08/07 13:30

質問内容

現在,railsアプリケーションをdocker上で作成しております.dbをmigrationする際に,以下のようなエラーが発生いたしました.

$ docker-compose run web rails db:migrate ?[feat/hirata/point-display] Starting quiz_competition_db_1 ... done pg_dump: server version: 12.3 (Debian 12.3-1.pgdg100+1); pg_dump version: 11.7 (Debian 11.7-0+deb10u1) pg_dump: aborting because of server version mismatch rails aborted! failed to execute: pg_dump -s -x -O -f /myapp/db/structure.sql myapp_development Please check the output above for any errors and make sure that `pg_dump` is installed in your PATH and has proper permissions. . . .

dockerではwebとdbのコンテナを動作させており,そのpostgresqlのversionが一致していないことが問題であると考えております.

$ docker exec -it quiz_competition_web_1 bash root@46379b37a91b:/myapp# psql --version psql (PostgreSQL) 11.7 (Debian 11.7-0+deb10u1) root@46379b37a91b:/myapp# exit $ docker exec -it quiz_competition_db_1 bash root@a211ec930c29:/# psql --version psql (PostgreSQL) 12.3 (Debian 12.3-1.pgdg100+1) root@a211ec930c29:/# exit

quiz_competition_web_1のpsql versionを12.3にすれば解決しそうなのですが,その部分がよくわからずつまづいております.
どなたかご教示いただけないでしょうか.

環境

Dockerfileの構成

FROM ruby:2.6.6 RUN apt-get update -qq && apt-get install -y nodejs postgresql-client RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install RUN curl https://deb.nodesource.com/setup_12.x | bash RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y nodejs yarn postgresql-client RUN apt-get install postgresql-12 postgresql-client-12 COPY . /myapp # Add a script to be executed every time the container starts. COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

version: '3' services: db: image: postgres volumes: - ./tmp/db:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: password web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3000:3000" depends_on: - db

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PostgreSQL 12のパッケージは、Ruby:2.6.6がもとにしているDebian 10 (Buster) には存在しないので、PostgreSQL公式のリポジトリを追加するしかなさそうです。

dockerfile

1FROM ruby:2.6.6 2 3# とりあえずパッケージを先に準備するように変更 4RUN curl https://deb.nodesource.com/setup_12.x | bash 5RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - 6RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 7 8# postgresql 12 はbusterにないので公式リポジトリを追加 9RUN sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' 10RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - 11 12RUN apt-get update && apt-get install -y --no-install-recommends nodejs yarn postgresql-client-12 13 14RUN mkdir /myapp 15WORKDIR /myapp 16COPY Gemfile /myapp/Gemfile 17COPY Gemfile.lock /myapp/Gemfile.lock 18RUN bundle install 19 20COPY . /myapp 21 22# Add a script to be executed every time the container starts. 23COPY entrypoint.sh /usr/bin/ 24RUN chmod +x /usr/bin/entrypoint.sh 25ENTRYPOINT ["entrypoint.sh"] 26EXPOSE 3000 27 28# Start the main process. 29CMD ["rails", "server", "-b", "0.0.0.0"]

投稿2020/08/07 14:46

YakumoSaki

総合スコア2027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

field_flat

2020/08/07 15:08

ご回答ありがとうございます!おかげで解決することができました! > PostgreSQL 12のパッケージは、Ruby:2.6.6がもとにしているDebian 10 (Buster) には存在しないので、PostgreSQL公式のリポジトリを追加するしかなさそうです。 この視点が私にはありませんでした.勉強になりました.本当にありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問