railsでポートフォリオを作成中です。
表題のとおりdokker-composeを使用して開発しております。
現在まで、develpment環境のみのDBを作成しておりました。
しかし、所用でdevelopment,testの環境によってDBを使い分けたいです。
下記のqiitaの記事を参考にtest_dbコンテナを追加してみました。
Rails x Docker環境にテストDBを構築する
【Docker】Rspecテスト用データベースの仮想環境構築
dockercomposeyml
1version: '3' 2services: 3 app: &app_base 4 build: 5 context: . 6 environment: 7 # RAILS_ENV: development 8 MYSQL_ROOT_PASSWORD: db_root_password 9 MYSQL_USER: app 10 MYSQL_PASSWORD: password 11 # MYSQL_DATABASE: 12 # - my_app_development 13 # - my_app_test 14 # DATABASE_HOST: db 15 stdin_open: true 16 tty: true 17 command: bundle exec puma -C config/puma.rb 18 volumes: 19 - .:/my_app 20 - public-data:/my_app/public 21 - tmp-data:/my_app/tmp 22 - log-data:/my_app/log 23 depends_on: 24 - db 25 - test_db 26 db: 27 image: mysql:5.7 28 environment: 29 MYSQL_ROOT_PASSWORD: db_root_password 30 MYSQL_USER: app 31 MYSQL_PASSWORD: password 32 MYSQL_DATABASE: my_app_development 33 DATABASE_HOST: db 34 volumes: 35 - db-data:/var/lib/mysql 36 ports: 37 - "3316:3306" 38(追加)-------------------------------------------- 39 test_db: 40 image: mysql:5.7 41 environment: 42 MYSQL_ROOT_PASSWORD: db_root_password 43 MYSQL_USER: test_app 44 MYSQL_PASSWORD: password 45 MYSQL_DATABASE: my_app_test 46 DATABASE_HOST: test_db 47 volumes: 48 - db-data:/var/lib/mysql 49 ports: 50 - "3317:3306" 51-------------------------------------------- 52 web: 53 build: 54 context: containers/nginx 55 volumes: 56 - public-data:/my_app/public 57 - tmp-data:/my_app/tmp 58 ports: 59 - "3000:80" 60 depends_on: 61 - app 62volumes: 63 public-data: 64 tmp-data: 65 log-data: 66 db-data:
databaseyml
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 # username: <%= ENV.fetch('MYSQL_USER') { 'app' } %> 6 password: <%= ENV.fetch('MYSQL_PASSWORD') { 'password' } %> 7 # host: localhost ←ローカル環境で実行する場合 8 # host: db 9 port: 3306 10 11development: 12 <<: *default 13 username: <%= ENV.fetch('MYSQL_USER') { 'app' } %> 14 database: my_app_development 15 host: db 16 17test: 18 <<: *default 19 username: <%= ENV.fetch('MYSQL_USER') { 'test_app' } %> 20 database: my_app_test 21 host: test_db 22 23# production: 24# <<: *default 25# database: my_app_production 26 27# https://qiita.com/nishina555/items/7142bc80ac0c678c3835 を参考に実装R2/12/31
上記コードに修正して
docker-compose down
docker-compose build
docker-compose up
を実行し、upの際に出力されるログでエラーが発生しておりました。
そのエラーが下記となります。
log
1[ERROR] InnoDB: Unable to lock ./ibdata1 error: 11 2[Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
このエラーなどについて他のサイト等を参考にしてプロセスをkillしたりもしたのですが、そもそも複数のDBを立ち上げる場合、このエラーは避けられないのでは?という考えに至ったところでございます。しかし、最初に貼り付けqiitaの記事では環境別にDBを使い分けれているようでしたので、何が原因か教えていただければとてもたすかります。
他にデータが必要な場合、対応いたしますのでよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー