質問内容
現在,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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/07 15:08