前提・実現したいこと
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
あなたの回答
tips
プレビュー