Construction d'environnement de rails avec Docker (apocalypse personnelle)

Créer un Dockerfile

-#Construire le contexte
% mkdir product-register
% cd product-register
-#Gemfile et Gemfile.Créer un verrou
% touch Gemfile Gemfile.lock
-#Édition de Gemfile
% vim Gemfile

product-register/Gemfile


source 'https://rubygems.org'
gem 'rails', '~>5.2'
-#Modification du Dockerfile
% vim Dockerfile

product-register/Dockerfile


FROM ruby:2.5
RUN apt-get update && apt-get install -y && \
    buile-essential \
    libpq-dev \
    nodejs \
    postgresql-client \
    yarn
WORKDIR /product-register
COPY Gemfile Gemfile.lock /product-register/
RUN bundle install
-#Créer un conteneur
% docker build .

Description de docker-compose.yml

-# docker-compose.Modification de yml
% vim docker-compose.yml

docker-compose.yml



version: '3'

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/product-register'
    tty: true
    stdin_open: true
-#Lancement du conteneur
% docker-compose up -d
-#Lorsque vous travaillez à l'intérieur d'un conteneur
% docker-compose exec web bash

Configuration des rails

-#Depuis la création de l'application, le paramétrage de la base de données et le bundle sont effectués avec Dockerfile - skip
# rails new . —force —database=postgresql —skip-bundle
-#Confirmez que le contenu de Gemfile a changé du côté hôte
% cat Gemfile
-#J'ai besoin de regrouper l'installation, alors arrêtez-vous une fois
# exit
$ docker-compose down
-# docker-Si vous composez, l'image précédente sera utilisée, alors construisez à nouveau
$ docker-compose up —build -d
% docker-compose exec web bash
-#Démarrer le serveur de rails
$ rails s -b 0.0.0.0

Je peux me connecter avec localhost: 3000, mais j'obtiens une page d'erreur car je n'ai pas défini la base de données.

Configuration de la base de données

config/database.yml


default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  user: postgres
  port: 5432
  password: <%= ENV.fetch("DATABASE_PASSWORD") %>
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

Puisqu'il n'est pas souhaitable d'écrire le mot de passe directement pour des raisons de sécurité, appelez-le avec une variable d'environnement.

Modifications apportées à docker-compose.yml

docker-compose.yml


version: '3'
#volume du docker Les données sont enregistrées ici
volumes: 
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/product-register'
#Le paramètre de variable d'environnement du conteneur, à l'origine le mot de passe ne doit pas être écrit directement.
    environment:
      - 'DATABASE_PASSWORD=postgres'
    tty: true
    stdin_open: true
#Créé une fois le service de base de données créé
    depends_on:
      - db
#Vous pouvez accéder à db depuis le Web
    links:
      - db
#conteneur postgres
  db:
    image: postgres
#Base de données hôte-Stocker les données dans les données
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'

Commencez avec docker-compose

% docker-compose up -d
-#Vous pouvez voir que les deux services fonctionnent
Creating product-register_db_1 ... done
Recreating product-register_web_1 ... done
% docker-compose exec web bash
-#Création de DB
# rails db:create
Created database 'product-register_development'
Created database 'product-register_test'

Vous pouvez voir que la base de données a été créée. De là, vous pouvez créer des applications Rails.

Créez une application et vérifiez le fonctionnement

-#Créez une application simple avec échafaudage
# rails g scaffold product name:string price:integer vender:string
-#Définir la table créée
# rails db:migrate
-#Démarrez le serveur
# rails s -b 0.0.0.0

Vous pouvez vous connecter avec localhost: 3000 et vous pouvez voir que la page rails est affichée. Vous pouvez vous connecter à des applications créées avec localhost: 3000 / products.

Recommended Posts

Construction d'environnement de rails avec Docker (apocalypse personnelle)
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
Construction de l'environnement Rails Docker
Créer un environnement Node.js avec Docker Compose
Construction d'environnement avec Docker pour les débutants
Rails sur la procédure de construction de l'environnement Docker
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Construction de l'environnement GPU avec Docker [version d'octobre 2020]
Construction de Rails 6 et environnement PostgreSQL avec Docker
Construction de l'environnement de développement Laravel avec Docker (Mac)
Construire un environnement Rails 6 + MySQL avec Docker compose
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Comment créer un environnement Rails 6 avec Docker
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
[Note personnelle] Construction de l'environnement Ruby on Rails (Windows)
[Rails] Comment créer un environnement avec Docker
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
[Rails API x Docker] Construction facile de l'environnement avec contrôle de la coque et du fonctionnement avec Flutter
Ingénieur Rails Environnement Construction Ruby2.7.1
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
Mémo de construction de l'environnement MySQL 5.7 (Docker)
Rails5 + MySQL8.0 + Construction d'environnement de volumes de premier niveau avec docker-compose
Exécuter des rails à chaque fois dans le docker
Mémo de construction de l'environnement Redmine (Docker)
Créer un environnement Docker avec WSL
Construction de l'environnement Docker × Spring Boot
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
[Rails / MySQL] Construction de l'environnement Mac
[Docker] postgres, construction de l'environnement pgadmin4
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Construction d'un environnement d'analyse de données avec Docker (mémorandum personnel)
[Docker] À utiliser à tout moment avec Docker + Rails
Créez un environnement pour Rails5 et postgresql avec Docker afin que pgadmin puisse également être utilisé
Créez un environnement Vue3 avec Docker!
Créer un environnement local Couchbase avec Docker
Créer un environnement Node.js avec Docker
Construction de l'environnement d'utilisation Laravel + Docker Laradock
Créer un environnement de vérification SolrCloud avec Docker
Mémo de construction de l'environnement Ruby on Rails 6.0