Ich bin gerade dabei, ein Portfolio zu erstellen. Ich bin beim Zugriff auf MySQL gestolpert, daher werde ich es einschließlich der Bedeutung des Memorandums schreiben. Ich würde mich freuen, wenn es Anfängern geliefert wird, die am selben Ort gestolpert sind.
$docker-compose up
Can't connect to local MySQL server through socket 'var/run/mysqld/mysqld.sock' (2)
① Legen Sie Benutzer und Kennwort in docker-compose.yml fest ② Legen Sie denselben Benutzer und dasselbe Kennwort in database.yml fest
Nach dem Eingeben des Datenbankcontainers mit $ docker exec -it <containerID> / bin / bash
Nachdem ich $ mysql -u root
ausgeführt hatte, gab ich ohne Probleme mysql ein.
Es gab also kein Problem mit dem Server selbst.
Ich denke, es gibt ein Problem mit den Benutzereinstellungen, also fügen Sie den Benutzer und das Kennwort zu docker-compose.yml und database.yml hinzu
Danach habe ich unter http: // localhost: port / darauf zugegriffen, aber ich habe den folgenden Fehler erhalten. Access denied for user 'root'@'172.18.0.5' (using password: YES) Als ich zuvor "Docker-Compose Up" gemacht habe, schien es, dass noch ein Cache im Volume vorhanden war, also habe ich das Volume gelöscht. Nachdem ich wieder "Docker-Compose Up" gemacht habe, habe ich es ohne Probleme eingefügt.
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"
#Erstellen Sie Datenbank- und Backend-Container
services:
db:
container_name: db
#Ziehen Sie das auf Docker Hub hochgeladene Bild
image: mysql:5.7.30
#Einstellungen für Umgebungsvariablen
environment:
TZ: Asia/Tokyo #Stellen Sie TimeZone und Dockerfile ein
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: password
#Geben Sie den Pfad der Konfigurationsdatei an, die gemountet werden soll
volumes:
- mysql_data:/var/lib/mysql
#Port einstellen
ports:
- 3316:3306
#Stellen Sie die IP-Adresse ein
networks:
app_net: #App unten beschrieben_Stellen Sie die folgenden IPs im Netznetzwerkbereich ein
ipv4_address: '172.20.0.2'
backend:
container_name: backend
#Führen Sie ComposeFile aus und geben Sie den Pfad an, wenn er erstellt wird
build: ./backend/
image: backend
#Führen Sie gem aus, um den Server zu starten, 0.0.0.Für vollen Zugriff an 0 binden
command: bundle exec rails server -b 0.0.0.0
#Starten Sie immer den Behälter
tty: true
#Starten Sie den Docker-Lauf für die Eingabeschnittstelle-gleichbedeutend damit
stdin_open: true
#Backend ist Cache, temp, log,Auf Git montieren
volumes:
- ./backend:/app:cached
- bundle_data:/usr/local/bundle:cached
- /app/vendor
- /app/tmp
- /app/log
- /app/.git
environment:
TZ: Asia/Tokyo
#Startreihenfolge steuern,Nach db
depends_on:
- db
ports:
- 5000:3000 #Anschlussweiterleitung
networks:
app_net:
ipv4_address: '172.20.0.3'
#Richten Sie Ihr eigenes Netzwerk ein
networks:
#app_Definieren Sie einen Netzwerkbereich namens net
app_net:
driver: bridge #Bridge Verbindung zum Netzwerk herstellen
ipam: #IP-Einstellungen
driver: default
config:
- subnet: 172.20.0.0/24 #Subnetz definieren
#Definieren Sie zwei Volumes
volumes:
mysql_data:
bundle_data:
Recommended Posts