[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?

Aperçu

Je suis en train de créer un portfolio. Puisque j'ai trébuché immédiatement dans la première construction de l'environnement, je vais l'écrire en incluant le sens du mémorandum. Je serais heureux s'il est livré aux débutants qui ont trébuché au même endroit.

Flux si loin

Could not find gem 'mysql2 (>= 0.4.4)' in any of the gem sources listed in your Gemfile.

Solution

① Installez MySQL localement ②bundle install ③ Confirmez que Gemfile.lock est créé

Cause

La cause première était que je polluais mon environnement lorsque j'installais MySQL localement. Il y a un problème avec le socket et les permissions, et il semble que "bundle install" n'ait pas bien tiré MySQL.

Par conséquent, supprimez tous les répertoires MySQL et réinstallez MySQL localement. Après cela, il se présente sous la forme de "bundle install".

Gemfile.lock ne fonctionnait pas bien, donc docker-compose up n'a pas extrait mysql. Au fait, le gemfile.lock n'a pas été créé par bundle install. (Pleurs)

rails × docker dit qu'un tel état local peut affecter. J'ai beaucoup appris.

Ce qui suit est l'environnement / l'histoire.

Fichier créé

Le Dockerfile et le docker-compose.yml ressemblent à ceci.

Dockerfile


#Utiliser Ruby
FROM ruby:2.6.6

#Code de caractère UTF-Définir sur 8
ENV LANG C.UTF-8

#Définir le fuseau horaire sur le Japon
ENV TZ Asia/Tokyo

#Créez un répertoire d'application directement sous la racine
RUN mkdir /app

#Dans le répertoire de travail/Déplacer en spécifiant l'application
WORKDIR /app

#Partager l'hôte Gemfile
COPY Gemfile /app/Gemfile

#Installer divers packages
#libpq:Requis pour déployer MySQL avec Gem
#sudo:Gestion des modifications des autorisations
#bundler(Mécanisme pour installer le package décrit dans Gemfile)Installer
RUN apt-get update -qq && apt-get install -y build-essential \
	libpq-dev \
	sudo \
	&& gem install bundler:2.0.1

#Installez les packages répertoriés dans le Gemfile
#Rails 6 dans Gemfile.0.3'Est listé
RUN bundle install

#/Partager le répertoire actuel avec l'application
COPY . /app

(C'est difficile à voir car c'est plein de commentaires ...)

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:latest
    #Paramètres des variables d'environnement
    environment: 
      TZ: Asia/Tokyo #Définir TimeZone ainsi que Dockerfile
      MYSQL_DATABASE: linpy_database #Définir le nom de la base de données
      MYSQL_ROOT_PASSWORD: ***** #Définir le mot de passe de l'utilisateur root
      MYSQL_USER: ***** #Définir l'utilisateur
      MYSQL_PASSWORD: ***** #Définissez le mot de passe utilisateur ci-dessus
    #Spécifiez le chemin du fichier de configuration à monter
    volumes:
      - mysql_data:/var/lib/mysql
    #Définir le port
    ports:
      - 3307: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:

Gemfile


source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.6'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
# gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
# gem 'rack-cors'

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'listen', '~> 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]


C'est pourquoi, mais il y a un joyau qui manque ...? Même si je fais une installation groupée ... Cela est sorti quand j'ai fait docker-compose build.

Fetching mysql2 0.5.3
Installing mysql2 0.5.3 with native extensions

La méthode qui n'a pas pu être résolue

NG1: J'ajouterai des mots magiques et des trucs

Ajoutez ce qui suit avant RUN bundle install dans le Dockerfile. Magic Words: bundle config --local build.mysql2" --with-ldflags = -L / usr / local / opt / openssl / lib "\ Ce n'était pas bon. .. ..

NG2: essayez de vider le cache

Après avoir construit avec docker-compose build --no-cache, j'ai fait docker-compose up, Ce n'était pas bon. ..

Recommended Posts

[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
J'ai construit un environnement de rails avec docker et mysql, mais j'étais malade
Construction de l'environnement Rails Docker
Mémo de construction de l'environnement MySQL 5.7 (Docker)
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Rails / MySQL] Construction de l'environnement Mac
Je ne trouve pas l'image du docker après la mise à jour vers Docker Desktop 2.4.0.0
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Rails sur la procédure de construction de l'environnement Docker
[Rails 6.0, Docker] J'ai essayé de résumer la construction de l'environnement Docker et les commandes nécessaires pour créer un portfolio
Création d'un environnement de développement pour Ruby on Rails à l'aide de Docker + VSCode (Remote Container)
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
Apprentissage des instructions SQL ~ Construction de l'environnement ~ Docker + MySQL
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construire un environnement Rails 6 + MySQL avec Docker compose
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Rails & React & Webpacker & Manuel de construction de l'environnement MySQL
[Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)
Procédure pour introduire Docker dans l'environnement de développement des applications Rails existantes [Rails, MySQL, Docker]
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
Exécutez l'environnement Docker Rails MySQL sur Heroku. concevoir et cacher l'API Twitter
Méthode de construction de l'environnement et dépanneur au moment du développement conjoint (rails, docker et github)
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
J'obtiens Mysql2 :: Error :: ConnectionError dans l'environnement de production
Rails5 + MySQL8.0 + Construction d'environnement de volumes de premier niveau avec docker-compose
Notez que je suis tombé sur la construction de l'environnement Rails
SSL dans l'environnement local de Docker / Rails / puma
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Je ne peux pas sortir de l'écran de la console Rails db
Quand j'ai commencé ansible + docker maintenant, j'ai trébuché depuis le début, mais j'ai réussi à le démarrer
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
J'ai essayé de construire l'environnement petit à petit en utilisant docker
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai fait la construction Docker des rails + postgresql comme officiel, mais cela n'a pas fonctionné, alors j'ai corrigé certains
Construction de l'environnement de développement Rails6 [Mac]
Ingénieur Rails Environnement Construction Ruby2.7.1
J'ai essayé node-jt400 (Construction de l'environnement)
Rails6 (MySQL, environnement Ubuntu, Cloud9)
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
Mémo de construction de l'environnement Redmine (Docker)
Construction de l'environnement Docker × Spring Boot
[Docker] postgres, construction de l'environnement pgadmin4
Rails 6 (mode API) + création d'environnement MySQL Docker par docker-compose (pour Mac)
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
Le super débutant construit Rails 6 + environnement Postgresql avec Docker jusqu'à la fin
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Jusqu'à ce que l'environnement docker soit créé et que le conteneur Ubuntu soit démarré et arrêté