[RUBY] Créer une application Rails avec Docker

Aperçu

Lors de la session d'étude Docker, j'ai pensé que ce serait un gaspillage de remplir le référentiel créé tel quel, alors je l'ai écrit sous forme d'article. J'espère que cela sera utile à quelqu'un.

https://github.com/yodev21/docker_tutorial_rails

Procédure de travail

Création de fichier

Créez le fichier suivant

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 de pgdatabol pour la persistance des données et montez la zone de données de postgresql
volumes:
  pgdatavol:
source 'https://rubygems.org'
gem 'rails', '5.2.4.2'

Gemfile.lock


création d'applications 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

Arrêter le conteneur

docker-compose stop

Supprimer le conteneur

docker-compose down

Déplacer dans le conteneur

docker-compose run web bash

Essayez d'utiliser la langue Go

Déplacer le répertoire

cd doc/golang/
FROM golang:1.9

RUN mkdir /echo
COPY main.go /echo
CMD ["go", "run", "/echo/main.go"]

Construire l'image

docker image build -t example/echo:latest .

Vérifiez l'image

docker image ls

Démarrer le conteneur

docker container run -d -p 9000:8080 example/echo:latest

Confirmation de la demande GET

curl http://localhost:9000

Recommended Posts

Créer une application Rails avec Docker
Un mémo sur la création d'une application Django (Python) avec Docker
Déployer l'application Django avec Docker
Développement d'applications avec Docker + Python + Flask
Exécutez une application Web Python avec Docker
Lancez l'application Flask avec Docker sur Heroku
Serveur TFTP avec Docker
Serveur proxy avec Docker
Bonjour le monde avec Docker
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Développement d'applications Web avec Flask
Application WebSocket avec Flask-Socket IO
Créer une application Web avec Django
La vie PySpark à partir de Docker
Préparer l'environnement python3 avec Docker
Essayez Selenium Grid avec Docker
Application Web avec Python + Flask ④
(Remarque) Remarques sur la création de l'environnement TensorFlow + Flask + Nginx avec Docker Compose
Créer un environnement Kubernetes avec Ansible 2
Japaneseize Matplotlib avec Alpine en utilisant Docker
Jusqu'à ce que vous démarriez Jupyter dans Docker
Easy Slackbot avec Docker et Errbot
Mesurer la couverture des applications Django avec Coverage.py
Créer un serveur Flask avec Docker
Créer un fichier deb avec Docker
Conseils pour exécuter Go avec Docker
Construire un environnement Mysql + Python avec docker
Surveillez les performances des applications Python avec Dynatrace ♪
Développement Google AppEngine avec Docker
Application de publication sur Twitter réalisée avec Django
Créer une application Web avec Django
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
Application de graphiques avec des curseurs
Automatisez les tests d'applications Windows avec Windows Application Driver-Python Edition
(Remarque) Remarques sur la création d'un environnement Tensor Flow avec Docker Compose (un seul conteneur)