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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Docker

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

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

Q&A

0回答

1039閲覧

ローカルで動いていたdocker環境が、GCPのGKEにデプロイしたら「Unknown MySQL server host 'db' (-2)」エラーが起こる

pipi

総合スコア0

docker-compose

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Docker

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

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

0グッド

1クリップ

投稿2021/08/20 15:39

前提・実現したいこと

RailsとMySQLを使ったdocker環境を、GCPのGoogle Kubernetes Engineにデプロイして動かしたいと考えています。

ローカル環境では正常に動いているのですが、GKEにデプロイして動かすと以下のエラーが出てしまい、原因が分からないでいます。

ActiveRecord::ConnectionNotEstablished Unknown MySQL server host 'db' (-2)

GKEへのデプロイの手順は公式の通りにやっていて、こちらは問題はないかと思っています。
https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app?hl=ja

該当のソースコード

Dockerfile

1FROM ruby:2.7.1 2RUN apt-get update -qq && apt-get install -y nodejs 3 4# yarnパッケージ管理ツールのインストール 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 10# Node.jsのインストール 11RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \ 12apt-get install nodejs 13 14RUN mkdir /myapp 15WORKDIR /myapp 16COPY Gemfile /myapp/Gemfile 17COPY Gemfile.lock /myapp/Gemfile.lock 18RUN bundle install 19COPY . /myapp 20 21# Add a script to be executed every time the container starts. 22COPY entrypoint.sh /usr/bin/ 23RUN chmod +x /usr/bin/entrypoint.sh 24ENTRYPOINT ["entrypoint.sh"] 25EXPOSE 3000 26 27# Start the main process. 28CMD ["rails", "server", "-b", "0.0.0.0"]

dockercompose

1 2version: '3' 3services: 4 db: 5 image: mysql:8.0 6 volumes: 7 - ./mysql/data:/var/lib/mysql 8 ports: 9 - '3307:3306' 10 11 environment: 12 MYSQL_DATABASE: root 13 MYSQL_ROOT_PASSWORD: password 14 15 web: 16 build: . 17 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 18 volumes: 19 - .:/myapp 20 ports: 21 - "3000:3000" 22 depends_on: 23 - db

database

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 host: db 5 username: root 6 password: password 7 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } % 8 9development: 10 <<: *default 11 database: myapp_development 12 13test: 14 <<: *default 15 database: myapp_test 16 17production: 18 <<: *default 19 database: myapp_production 20 username: myapp 21 password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> 22

質問

最初に書いてある通り、「Unknown MySQL server host 'db' (-2)」のエラーを解決したく、上記ソースコードが問題なのではと思っているのですがご教授いただきたいです。

また、GCPへのコンテナのデプロイは、Google Compute Engineを使う方法もありますが、今回はRailsとMySQLでimageが2つとなるためにGoogle Kubernetes Engineを使用する認識でいるのですがそちらは合っていますでしょうか?

GCPもDockerも初心者で理解も少なくて申し訳ないですが、どうぞよろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Ruby : 2.7.1
Docker : 20.10.7
docker-compose : 1.29.2

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

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

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

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

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

68user

2021/08/21 08:42

わたしもよくわかってないんですけど、GKE で Docker Compose って、Compose on Kubernetes とか使わないといけないという認識なんですが、使ってないんですよね? あと Cloud SQL じゃなくて GKE 上で MySQL 動かしたいんですか? 少なくともストレージ永続化は必要と思われますが、Docker Compose がよろしくやってくれる気はしないですね。 参考: https://741y4k1.hatenablog.com/entry/2019/02/19/164618 GKE の勉強目的であれば、まずは GKE + Cloud SQL でどうでしょうとは思いました (お金かかりますけど)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問