[RUBY] Rails6 J'ai essayé d'introduire Docker dans une application existante

Objectif de cet article Docker a réussi à l'introduire tout en usant son esprit, effrayé chaque jour par l'angoisse de perdre sa place à la maison s'il ne réussissait pas à changer d'emploi. Un mémorandum pour faire les difficultés une seule fois w

Procédure
  1. Changer la base de données de Splite3 en Postgresql
  2. Ajouter un fichier
  3. Modifier Dockerfile, docker-compose.yml, database.yml, webpacker.yml
  4. Télécharger Docker pour mac
  5. Tapez la commande

Changer la base de données de Splite3 en Postgresql Il semble qu'il soit devenu possible de le changer avec une commande de Rails 6.
$ rails db:system:change --to=postgresql

Ajouter et modifier des fichiers Dans le répertoire racine de l'application, Dockerfile docker-compose.yml Ajoutez et modifiez les deux ci-dessus.
#Dockerfile

FROM ruby:2.7.1 #Faites correspondre la version. Vérifier avec Gemfile
RUN curl https://deb.nodesource.com/setup_12.x | bash
RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

RUN apt-get update && apt-get install -y nodejs yarn postgresql-client
RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y postgresql-client --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR /myapp

ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock

RUN gem install bundler
RUN bundle install

ADD . /myapp

↑ J'ai eu diverses erreurs et j'y suis allé, mais je reçois toujours un avertissement. Pien

#docker-compose.yml

version: '3'
services:
  db:
    image: postgres
    ports:
      - '5432:5432'
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=password # Si vous ne définissez pas de mot de passe arbitraire, une erreur se produira.
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    tty: true
    stdin_open: true
    depends_on:
      - db
    ports:
      - "3000:3000"
    volumes:
      - .:/myapp #Les modifications du code source sont immédiatement reflétées dans Docker
volumes:
  postgresql-data:
    driver: local

database.yml



#Omettre le commentaire
#le mot de passe est docker-compose.Ce qui a été défini avec yml

default: &default
  adapter: postgresql
  encoding: utf8
  host: db
  username: postgres
  password: password 
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: mayby_docker_development

#Omettre le commentaire

test:
  <<: *default
  database: mayby_docker_test

#Omettre le commentaire

production:
  <<: *default
  database: mayby_docker_production
  username: mayby_docker
  password: <%= ENV['MAYBY_DOCKER_DATABASE_PASSWORD'] %>

webpacker.yml


check_yarn_integrity: false
#default,Cela semblait inutile à moins que les deux développements ne soient définis sur faux.

Télécharger Docker pour mac Je vais le télécharger sur le site officiel. https://docs.docker.jp/docker-for-mac/install.html

Tapez la commande Comme il est long, il se fanera lorsqu'une erreur se produit.
$ docker-compose build

Créez une base de données et migrez.

$ docker-compose run web rake db:create db:migrate

S'il est affiché en local: 3000, il semble que cela ait été fait pour le moment.

$ docker-compose up

Je suis enfin arrivé jusqu'ici, mais cela n'apparaît pas! Le navigateur dit qu'il a simplement été rejeté par l'hôte local, alors reportez-vous ici.

[Rails] Que faire si "Impossible de rendre la console depuis !" Apparaît dans le journal des rails

config/environment/development.rb



 config.web_console.whitelisted_ips = 'Adresse IP rejetée'

Je l'ai fait, mais il y en a encore d'autres

Il y avait quelque chose appelé une erreur de segmentation liée au SaaS. Quand j'essaye de google avec le dernier pouvoir,

Résolution du problème selon lequel Rails 6 provoquait une erreur de segmentation

Il y avait un blog divin.

assets.rb


#Arrêter la compilation parallèle des asetts (contre-mesures contre les erreurs de segmentation)
Rails.application.config.assets.configure do |env|
  env.export_concurrent = false
end

On dit qu'une gemme de contre-mesure sera publiée, mais je ne suis pas encore sûr, donc j'attendrai un moment.

Dernier C'est un Docker branché, Ce n'est pas une chose réelle, donc vous ne pouvez pas le comprendre à moins d'en faire l'expérience. Ensuite, j'essaierai de déployer sur AWS.

Recommended Posts

Rails6 J'ai essayé d'introduire Docker dans une application existante
J'ai essayé de développer une application en 2 langues
À propos du cas où "Docker" freeter a tenté de mettre Docker dans l'application Rails existante
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
Présentation de Vue.js à une application Rails existante
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de créer une application Android avec MVC maintenant (Java)
Qu'est-ce que Docker? J'ai essayé de résumer
Introduction de Vuetify aux applications Rails existantes
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
J'ai essayé de faire une sauvegarde automatique avec plus agréable + PostgreSQL + SSL + docker
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
J'ai essayé d'installer docker sur une instance EC2
Présentez docker à l'application que vous créez
[Rails] Comment créer un environnement avec Docker
[Rails] Créer une application
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)
[Rails 6] Ancrez les applications Rails existantes [Docker]
J'ai essayé Rails débutant [Chapitre 1]
J'ai essayé Rails débutant [Chapitre 2]
J'ai essayé BIND avec Docker
J'ai essayé de vérifier yum-cron
J'ai essayé de moderniser une application Java EE avec OpenShift.
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Je veux pousser une application créée avec Rails 6 vers GitHub
Présentation de Vue.js à une application Rails existante
J'ai essayé de créer un React.js x TypeScript x Material-UI sur un environnement docker
J'ai essayé de construire l'environnement petit à petit en utilisant docker
[Rails] J'ai essayé d'implémenter le traitement par lots avec la tâche Rake
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai essayé de créer un environnement de développement padrino avec 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
J'ai essayé de créer un serveur API avec Go (Echo) x MySQL x Docker x Clean Architecture