Dockerを使用したRailsアプリケーションの構築をしております。
- rubyのバージョン:ruby:2.7.1
- railsのバージョン:6.0.3
### Dockerfile FROM ruby:2.7.1-alpine3.11 ARG PRECOMPILE ENV APP_HOME /app RUN mkdir -p $APP_HOME WORKDIR $APP_HOME ADD Gemfile* $APP_HOME/ RUN apk update && \ apk add --no-cache build-base linux-headers git mariadb-dev mysql-client imagemagick6-dev tzdata && \ bundle install && \ rm -rf /usr/local/bundle/cache/* /usr/local/share/.cache/* /var/cache/* /tmp/* ADD . $APP_HOME/
### docker-compose.yml version: '3.7' services: db: container_name: test_mysql image: mysql:8.0.20 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test MYSQL_USER: test_user MYSQL_PASSWORD: test_password ports: - '3306:3306' app: &app container_name: test_app build: context: . dockerfile: Dockerfile volumes: - type: bind source: . target: /app - type: volume source: bundle target: /usr/local/bundle environment: - MYSQL_DATABASE_NAME=test - MYSQL_USER=test_user - MYSQL_PASSWORD=test_password - MYSQL_HOST=db - NODE_ENV=development - MYSQL_TEST_USER=root - MYSQL_TEST_PASSWORD=root command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" ports: - '3000:3000' links: - db tty: true stdin_open: true volumes: bundle:
上記のように設定をしております。
ここで
- docker-compose build
- docker-compose up
をしたところ、rails自体は起動するのですが、以下のようにmysqlに接続できない旨のエラーが出てしまいます。。
app_1 | => Booting Puma app_1 | => Rails 6.0.3 application starting in development app_1 | => Run `rails server --help` for more startup options app_1 | Puma starting in single mode... app_1 | * Version 4.3.3 (ruby 2.7.1-p83), codename: Mysterious Traveller app_1 | * Min threads: 5, max threads: 5 app_1 | * Environment: development app_1 | * Listening on tcp://0.0.0.0:3000 app_1 | Use Ctrl-C to stop app_1 | Started GET "/" for 172.19.0.1 at 2020-10-01 16:59:56 +0000 app_1 | app_1 | Mysql2::Error::ConnectionError (Can't connect to MySQL server on '127.0.0.1' (115)): app_1 | app_1 | mysql2 (0.5.3) lib/mysql2/client.rb:90:in `connect' app_1 | mysql2 (0.5.3) lib/mysql2/client.rb:90:in `initialize' app_1 | activerecord (6.0.3) lib/active_record/connection_adapters/mysql2_adapter.rb:24:in `new'
こちらの原因について、どなたかご教授いただけないでしょうか。。
開示する情報に不足がありましたら、追記させていただきます。
ちなみに、dockerで起動しているmysql自体には直接ならば接続が可能な状況です。
~ % mysql -h 127.0.0.1 -u test_user -p Enter password: test_password Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.01 sec)
docker ps を行った結果は以下のようになっております。
% docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES XXXXXXXX test_app "/bin/sh -c 'rm -f t…" 57 minutes ago Up 9 minutes 0.0.0.0:3000->3000/tcp test_app YYYYYYYY mysql:8.0.20 "docker-entrypoint.s…" 57 minutes ago Up 9 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp test_mysql
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/02 07:51