[RUBY] J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold

introduction

Comment créer une application dans Ruby on Rails à l'aide de Docker-compose avec référence à des livres, des vidéos et des articles Qiita J'ai eu du mal, alors j'ai essayé diverses choses et j'ai finalement réussi à le faire fonctionner, donc je vais laisser le fichier final et la procédure d'exécution.

Procédure de travail

Création de fichier

Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
#Ruby dans le nom de l'image(Ver2.6.5)Spécifiez l'image de l'environnement d'exécution de
FROM ruby:2.6.5

#Mettez à jour la liste des packages et installez les packages requis pour créer l'environnement rails
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

#Créez un répertoire pour votre projet
RUN mkdir /myapp

#Définir sur le répertoire de travail
WORKDIR /myapp

#Copier dans le répertoire du projet
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock

#Exécuter l'installation du bundle
RUN bundle install

#Copiez tout le contenu du contexte de construction dans myapp
COPY . /myapp

docker-compose.yml


version: '3'
services:
  db:
    #Obtenir une image de postgres
    image: postgres
    environment:
      POSTGRES_USER: 'postgresql'
      POSTGRES_PASSWORD: 'postgresql-pass'
    restart: always
    volumes:
      - pgdatavol:/var/lib/postgresql/data
  web:
    #Créer et utiliser une image à partir d'un Dockerfile
    build: .
    #Exécuté au démarrage du conteneur
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    #Répertoire actuel/Lier la monture à myapp
    volumes:
      - .:/myapp
    #Publier à 3000 et transférer à 3000 en conteneur
    ports:
      - "3000:3000"
    #Démarrez le service db avant de démarrer le service Web
    depends_on:
      - db
#Créez un volume pgdatabol pour la persistance des données et montez la zone de données postgresql
volumes:
  pgdatavol:
source 'https://rubygems.org'
gem 'rails', '5.2.4.2'

Gemfile.lock


création d'application de rails

docker-compose run web rails new . --force --database=postgresql

Fichier de configuration de base de données fixe utilisé pour le projet de rails

database.yml


default: &default
  adapter: postgresql
  encoding: unicode
  # --------ajouter à--------
  host: db
  username: postgresql
  password: postgresql-pass
  # --------Jusque là--------

Démarrer en mode détaché (arrière-plan)

docker-compose up -d

Que faire si l'installation du bundle n'est pas reflétée

docker-compose build --no-cache

Commande de création de base de données

docker-compose run web rails db:create

Créez une application simple avec Scaffold

docker-compose run web bin/rails g scaffold User name:string
docker-compose run web bin/rails db:migrate

http://localhost:3000/users

URL de référence

[Je viens de démarrer Docker, je l'ai donc résumé de manière simple à comprendre](https://qiita.com/gold-kou/items/44860fbda1a34a001fc1#%E3%83%9B%E3%82%B9%E3%83%88% E5% 9E% 8B% E4% BB% AE% E6% 83% B3% E5% 8C% 96)

Comment supprimer l'image et le conteneur Docker

[Création d'un conteneur Docker, démarrage et arrêt](https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53#5%E3%82%B3%E3%83%B3%E3%83%86%E3%83% 8A% E3% 81% AE% E5% 81% 9C% E6% AD% A2)

Je devrais avoir une installation groupée dans l'image avec Docker Compose + Rails, mais j'obtiens une erreur s'il n'y a pas de gemme.

Solution pour l'installation du bundle pas dans le conteneur avec Docker

Recommended Posts

J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de créer une simple application Android de reconnaissance faciale en utilisant OpenCV
java j'ai essayé de casser un simple bloc
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Rails6 J'ai essayé d'introduire Docker dans une application existante
J'ai essayé de moderniser une application Java EE avec OpenShift.
[Rails] J'ai essayé de créer une mini application avec FullCalendar
J'ai essayé de construire l'environnement petit à petit en utilisant docker
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
Préparation à la création de l'application Rails
[Rails] J'ai essayé de supprimer l'application
J'ai essayé de créer une application cartographique simple dans Android Studio
[Unity] J'ai essayé de créer un plug-in natif UniNWPathMonitor en utilisant NWPathMonitor
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Je souhaite développer une application web!
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
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 construire AdoptOpenjdk 11 sur CentOS 7
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
[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é de développer un outil de gestion des effectifs
J'ai essayé de développer un site Web pour étudier DUO3.0.
J'ai essayé de créer une application de clonage LINE
[Rails] J'ai créé une fonction de brouillon en utilisant enum
J'ai essayé de construire AdoptOpenJDK 8 (ajout: Amazon Corretto 8 également)
J'ai essayé de développer une application en 2 langues
J'ai essayé de développer un site Web pour enregistrer les dépenses.
J'ai essayé de casser le bloc avec java (1)
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.
Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)
J'ai essayé d'utiliser une connexion à une base de données dans le développement Android
[Introduction] Créer une application Ruby on Rails
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (version inachevée ②)
Implémentez un système de réservation utilisant des Rails et un calendrier simple! Ajoutons la validation à datetime!
J'ai essayé de développer un site Web de partage de boutique de ramen.
J'ai essayé d'utiliser Gson
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
Je veux utiliser une petite icône dans Rails
J'ai essayé d'utiliser Wercker pour créer et publier une image Docker qui lance GlassFish 5
J'ai essayé d'utiliser la boîte à outils de migration pour les fichiers binaires d'application
J'ai essayé de créer une compétence Clova en Java