Hello :)
Alors voila j'ai un soucis avec Docker, quand je lance la commande docker compose exec app rails db:migrate
j'ai cette erreur:
rails aborted!
ActiveRecord::ConnectionNotEstablished: Can't connect to server on 'database' (115)
Caused by:
Mysql2::Error::ConnectionError: Can't connect to server on 'database' (115)
Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
Je ne vois pas d'où ça pourrait venir :/
Voila pour le code
Docker Compose
version: '3'
volumes:
mysql_data:
bundle:
services:
server:
restart: unless-stopped
build:
context: .
dockerfile: ./docker/server/Dockerfile
volumes:
- .:/var/www/app
- ./docker/server/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
ports:
- 80:80
database:
image: mysql:8.0
env_file: .env.$RAILS_ENV
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql
ports:
- "5432:3306"
app:
restart: unless-stopped
build:
context: .
dockerfile: ./docker/app/Dockerfile
volumes:
- .:/var/www/app
- bundle:/usr/local/bundle
ports:
- "3000:3000"
depends_on:
- database
links:
- database
env_file: .env.$RAILS_ENV
tty: true
mailhog:
image: mailhog/mailhog
logging:
driver: 'none'
ports:
- 1025:1025
- 8025:8025
Config Database
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
port: 5432
development:
<<: *default
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWORD'] %>
host: <%= ENV['DB_HOST'] %>
database: <%= ENV['DB_NAME'] %>
Quelqu'un aurait une idée? ^^
EDIT
alors j'ai placé le port 5432 à 3306:3306, ça me fait cette erreur quand je lance db:create
:
Created database 'app'
Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
Couldn't create '' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
Caused by:
Mysql2::Error::ConnectionError: Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
quand je lance db:migrate:reset
j'ai:
Dropped database 'app'
Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
Couldn't drop database ''
rails aborted!
ActiveRecord::ConnectionNotEstablished: Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
Caused by:
Mysql2::Error::ConnectionError: Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
En gros ça arrive à créer la database, ou à la drop pour faire un reset, et tout de suite après il y a l'erreur, du coup je comprends pas, je suis connecté à la base ou pas? :/
Hello :)
Yep ça me semble bon, mais je viens de comprendre le soucis
Ma config host, dbname etc.... je dois le placer en default
pour qu'il puisse s'appliquer sur les base de prod et de test en plus de l'env de development
Et tout va bien mieux maintenant, j'ai passé mon temps à chercher du coté de Docker (90% du temps c'est Docker le pb ^^') mais en fait c'était juste qu'il fallait appliquer les paramètres pour les bases de prod et de test... Même si je n'utilise que la base de dev ^^'