[RUBY] Rails5 + MySQL8.0 + Top-Level-Volume-Umgebungskonstruktion mit Docker-Compose

Rails5 + MySQL auf Docker-Umgebungskonstruktion durch zu höfliches Docker-Compose (Docker für Mac) Es ist fast der gleiche Inhalt wie. Wenn Sie mehr wissen möchten, gehen Sie bitte dorthin. Es ist ein wenig anders, z. B. verschiedene Versionen von MySQL oder die Verwendung von Volumes der obersten Ebene.

Umgebung

$ mkdir rails_docker
$ cd rails_docker
$ vi Dockerfile

Dockerfile


FROM ruby:2.7.1

RUN apt-get update -qq && \
    apt-get install -y build-essential \
                       libpq-dev \
                       nodejs \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir /recruit_web
ENV APP_ROOT /recruit_web
WORKDIR $APP_ROOT

ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

RUN bundle install
ADD . $APP_ROOT
$ vi Gemfile

Gemfile


source 'https://rubygems.org'
gem 'rails',  '~> 5.2.4', '>= 5.2.4.4'
$ touch Gemfile.lock
$ vi docker-compose.yml

docker-compose.yml


version: '3'
services:
  db:
    image: mysql:8.0.21
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - rails_docker_network
    environment:
        MYSQL_DATABASE: root
        MYSQL_ROOT_PASSWORD: password
    # mysql8.0 Authentifizierungs-Plug-In(caching_sha2_password)MySQL_native_Zum Passwort wechseln
    command: --default-authentication-plugin=mysql_native_password
    container_name: rails_db_container
  web:
    build: .
    depends_on:
      - db
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/recruit_web
    networks:
      - rails_docker_network
    ports:
      - "3000:3000"
    container_name: rails_web_container

volumes:
  db_data:

networks:
  rails_docker_network:
    name: rails_docker_network
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
$ vi /confing/database.yml

database.yml


default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root #hinzufügen
  password: password #hinzufügen
  host: db #hinzufügen
$ docker-compose build
$ docker-compose up -d

Wenn Sie den folgenden Befehl ausführen, wird eine Datenbank erstellt, auf die Sie unter localhost zugreifen können: 3000.

$ docker-compose run web rails db:create

Wo es stecken bleibt

docker-compose.yml


version: '3'
services:
  db:
    image: mysql:8.0.21
    volumes:
      - db_data:/var/lib/mysql
    environment:
        MYSQL_DATABASE: root
        MYSQL_ROOT_PASSWORD: password
    #Ich habe eine Fehlermeldung erhalten, wenn ich Folgendes angegeben habe
    ports:
      - "3306:3306 

  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_sample
    ports:
      - "3000:3000"
    #Ich habe eine Fehlermeldung erhalten, wenn ich Folgendes angegeben habe(nicht empfohlen+Ich brauchte es nicht, weil der Name ohne es aufgelöst würde)
    links:
      - db

volumes:
  db_data:

Aus irgendeinem Grund, wenn Sie den öffentlichen Port von Links und db angeben

Mysql2::Error::ConnectionError: Access denied for user 'root'@'172.19.0.4' (using password: YES)

Ich war wütend und stolperte erheblich. .. ..

Vorerst wurde mir klar, dass ich den Port nicht brauchte und ich löschte ihn. In dem Dokument scheinen Links in der Lage zu sein, den Namen aufzulösen, auch wenn er nicht veraltet ist. Löschen Sie ihn daher https://docs.docker.com/compose/networking/

Ich würde mich freuen, wenn Sie etwas verbessern könnten.

Recommended Posts

Rails5 + MySQL8.0 + Top-Level-Volume-Umgebungskonstruktion mit Docker-Compose
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
[Rails / MySQL] Aufbau einer Mac-Umgebung
Konstruktionshandbuch für eine stabile Entwicklungsumgebung für "Rails6" mit "Docker-compose"
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Rails API-Serverumgebungskonstruktion mit Docker-Compose
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Konstruktionsverfahren für die Docker-Umgebung "Rails 6 x MySQL 8" für die gemeinsame Nutzung mit Teams
Rails & React & Webpacker & MySQL Environment Konstruktionshandbuch
Fehler beim Bereitstellen von Rails5 + MySQL auf Heroku mit Docker-Compose
Aufbau der Rails Docker-Umgebung
[Rails] Entwicklung mit MySQL
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
Rails Engineer Environment Construction Ruby2.7.1
Rails6 (MySQL, Ubuntu-Umgebung, Cloud9)
Schienen Umgebungsbau Schienen5.2.1 ruby2.5.1 Catalina
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
[Verfahren 1 für Anfänger] Ruby on Rails: Aufbau einer Entwicklungsumgebung
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Umgebungsbau mit Docker für Anfänger
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
Rails 6 (API-Modus) + MySQL Docker-Umgebungserstellung durch Docker-Compose (für Mac)
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
Konstruktionsverfahren für Rails on Docker-Umgebungen
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
Problematischer Ablauf der Rails-Umgebung [Windows 10]
[Rails] Aufbau einer AWS EC2-Instanzumgebung
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
[Umgebungskonstruktion] Rails + MySQL + Docker (Anfänger können es auch in 30 Minuten verwenden!)
[Aufbau der Rails & Docker & MySQL-Umgebung] Ich habe den Container gestartet, kann aber MySQL nicht finden ...?
[Rails API x Docker] Einfache Umgebungskonstruktion mit Shell- und Funktionsprüfung mit Flutter
Erstellen Sie eine Bulletin-Board-API mit Zertifizierung und Autorisierung mit Rails 6 # 1 Environment Construction
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
SQL-Anweisungslernen ~ Umgebungskonstruktion ~ Docker + MySQL
Aufbau einer GPU-Umgebung mit Docker [Version Oktober 2020]
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Versuchen Sie, MySql und Blazor mit Docker-Compose auszuführen
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung