Rails5 + Construction de l'environnement MySQL sur Docker par Docker-compose trop poli (Docker pour Mac) C'est presque le même contenu que. Alors si vous voulez en savoir plus, allez-y. C'est un peu différent, comme différentes versions de mysql ou l'utilisation de volumes de premier niveau.
$ 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 plug-in d'authentification(caching_sha2_password)Mysql_native_Changer de mot de passe
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 #ajouter à
password: password #ajouter à
host: db #ajouter à
$ docker-compose build
$ docker-compose up -d
Si vous exécutez la commande suivante, une base de données sera créée et vous pourrez y accéder sur localhost: 3000.
$ docker-compose run web rails db:create
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
#J'ai eu une erreur si j'ai spécifié ce qui suit
ports:
- "3306:3306
web:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app_sample
ports:
- "3000:3000"
#J'ai eu une erreur si j'ai spécifié ce qui suit(non recommandé+Je n'en avais pas besoin car le nom serait résolu sans lui)
links:
- db
volumes:
db_data:
Pour une raison quelconque, si vous spécifiez le port public des liens et de la base de données
Mysql2::Error::ConnectionError: Access denied for user 'root'@'172.19.0.4' (using password: YES)
J'étais en colère et j'ai trébuché considérablement. .. ..
Pour le moment, j'ai réalisé que je n'avais pas besoin du port et je l'ai supprimé. À partir du document, les liens semblent pouvoir résoudre le nom même s'il n'est pas obsolète, alors supprimez-le https://docs.docker.com/compose/networking/
J'apprécierais s'il y avait des améliorations.
Recommended Posts