Je suis en train de créer un portfolio. J'ai trébuché en accédant à mysql, donc je vais l'écrire en incluant la signification du mémorandum. Je serais heureux s'il est livré aux débutants qui ont trébuché au même endroit.
$docker-compose upCan't connect to local MySQL server through socket 'var/run/mysqld/mysqld.sock' (2)
① Définissez l'utilisateur et le mot de passe dans docker-compose.yml ② Définissez le même utilisateur et mot de passe dans database.yml
Après être entré dans le conteneur db avec $ docker exec -it <containerID> / bin / bash
Après avoir exécuté $ mysql -u root, j'ai entré mysql sans aucun problème.
Il n'y avait donc aucun problème avec le serveur lui-même.
Je pense qu'il y a un problème avec les paramètres utilisateur, alors ajoutez l'utilisateur et le mot de passe à docker-compose.yml et database.yml
Après cela, je l'ai accédé à http: // localhost: port /, mais j'ai eu l'erreur suivante.
Access denied for user 'root'@'172.18.0.5' (using password: YES)
Quand j'ai fait docker-compose up auparavant, il semblait qu'il y avait un cache dans le volume, alors j'ai supprimé le volume.
Après avoir refait docker-compose up, je l'ai mis sans aucun problème.
database.yml
# MySQL. Versions 5.5.8 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db
development:
  <<: *default
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
# As with config/credentials.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
docker-compose.yml
version: "3"
#Créer des conteneurs de base de données et de backend
services:
  db:
    container_name: db
    #Extraire l'image téléchargée sur Docker Hub
    image: mysql:5.7.30
    #Paramètres des variables d'environnement
    environment: 
      TZ: Asia/Tokyo #Définir TimeZone ainsi que Dockerfile
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: password
    #Spécifiez le chemin du fichier de configuration à monter
    volumes:
      - mysql_data:/var/lib/mysql
    #Définir le port
    ports:
      - 3316:3306
    #Définir l'adresse IP
    networks:
      app_net: #App ci-dessous_Configuré pour utiliser les adresses IP suivantes dans l'espace réseau net
        ipv4_address: '172.20.0.2'
  backend:
    container_name: backend
    #Exécutez ComposeFile et spécifiez le chemin lorsqu'il est construit
    build: ./backend/
    image: backend
    #Exécutez gem pour démarrer le serveur, 0.0.0.Lier à 0 pour un accès complet
    command: bundle exec rails server -b 0.0.0.0
    #Démarrez toujours le conteneur
    tty: true
    #Lancer l'exécution du menu fixe de l'interface d'entrée-synonyme de ça
    stdin_open: true
    
    #Le backend est le cache, temp, log,Monter sur git
    volumes:
      - ./backend:/app:cached
      - bundle_data:/usr/local/bundle:cached
      - /app/vendor
      - /app/tmp
      - /app/log
      - /app/.git
    environment:
      TZ: Asia/Tokyo
    
    #Contrôle de l'ordre de démarrage,Après db
    depends_on:
      - db
    ports:
      - 5000:3000 #Port avant
    networks:
      app_net:
        ipv4_address: '172.20.0.3'
#Configurez votre propre réseau
networks:
  #app_Définissez un espace réseau appelé net
  app_net:
    driver: bridge #pont Se connecter au réseau
    ipam: #Paramètres IP
      driver: default
      config:
        - subnet: 172.20.0.0/24 #Définir le sous-réseau
#Définissez deux volumes
volumes:
  mysql_data:
  bundle_data:
        Recommended Posts