[JAVA] [Docker] Comment créer un environnement virtuel pour les applications Rails et Nuxt.js

Comment puis-je utiliser l'environnement Docker avec une application qui utilise Nuxt et Rails? Pour référence, je vais vous expliquer les fichiers et les commandes jusqu'à la construction étape par étape!

Cette fois, je voudrais créer un environnement de développement d'applications appelé feeder.

Fichiers et répertoires préparés par vous-même

#Dossier préparé par vous-même

|-web/
|    |--dossier d'application
|    |--Dockerfile
|--back/
|    |--dossier d'application
|    |--Dockerfile
|    |--Gemfile
|    |--Gemfile.lock  #Fichier vide
|--docker-compose.yml
|--.git

Paramètres et fichier de commande Docker pour la création de conteneurs, le démarrage (démarrage du serveur), la création d'images, etc.

docker-compose.yml


version: "3"

services:
  db:
    container_name: database
    image: mysql:5.7
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: feeder
      MYSQL_DATABASE: feeder
      MYSQL_USER: feeder
      MYSQL_PASSWORD: feeder
      TZ: Asia/Tokyo
    ports:
      - 3308:3306
    volumes:
      - ./database/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./database/data:/var/lib/mysql
      - ./database/sql:/docker-entrypoint-initdb.d

  api:
    container_name: back
    tty: true
    depends_on:
      - db
    build:
      context: back/
      dockerfile: Dockerfile
    ports:
      - 3000:3000
    volumes:
      - ./back/app:/app
    command: rails server -b 0.0.0.0

  front:
    container_name: web
    tty: true
    build:
      context: web/
      dockerfile: Dockerfile
    ports:
      - 8080:3000
    volumes:
      - ./web/app:/app
    command: sh -c 'yarn install; yarn dev'

Description des fichiers requis pour la création et la création d'images

Dessin de conception d'image de Nuxt

FROM node:12.5.0-alpine

ENV LANG=C.UTF-8 \
  TZ=Asia/Tokyo

WORKDIR /app

RUN apk update && \
  apk upgrade && \
  npm install -g npm && \
  npm install -g @vue/cli && \
  npm install -g create-nuxt-app

ENV HOST 0.0.0.0
EXPOSE 3000

Dessin de conception d'image de rails

FROM ruby:2.5

ENV LANG=C.UTF-8 \
  TZ=Asia/Tokyo

WORKDIR /app

RUN apt-get update -qq && \
  apt-get install -y nodejs default-mysql-client

COPY app/Gemfile /app/Gemfile
COPY app/Gemfile.lock /app/Gemfile.lock
RUN bundle install

Gemfile


source 'https://rubygems.org'
gem 'rails', '~> 6.0.3', '>= 6.0.3.2'

Création d'image

$ docker-compose build

Génération d'applications Nuxt

$ docker-compose run --rm web yarn create nuxt-app

Génération d'applications Rails

$ docker-compose run --rm back rails new . -f -d mysql --api

Configuration de la connexion entre DB et rails

database.yml


# MySQL. Versions 5.5.8 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  charset: utf8mb4
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: feeder
  password: feeder
  host: database

development:
  <<: *default
  database: feeder

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: feeder

# As with config/credentials.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: feeder
  username: feeder
  password: <%= ENV['FEEDER_DATABASE_PASSWORD'] %>

Créer une base de données

$ docker-compose build
$ docker-compose run --rm back rails db:create

Démarrez le serveur (démarrez le conteneur)

$ docker-compose up -d

Entrez les commandes dans le service (dans le conteneur)

$ docker-compose exec service name Script de commande à exécuter

Je souhaite saisir une commande pour une application Rails

$ docker-compose exec back sh

Je veux taper une commande pour une application Nuxt

$ docker-compose exec web sh

Recommended Posts

[Docker] Comment créer un environnement virtuel pour les applications Rails et Nuxt.js
Comment créer une image de conteneur légère pour les applications Java
Comment créer et lancer un Dockerfile pour Payara Micro
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
Comment créer un référentiel Maven pour 2020
[rails] Comment créer un modèle partiel
Comment créer un environnement Rails 6 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
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Comment créer une base de données H2 n'importe où
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment créer des pages pour le tableau "kaminari"
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Comment créer facilement un pull-down avec des rails
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
[Rails] Comment créer un bouton de partage Twitter
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
[Rails] Comment créer un environnement avec Docker
Créer un environnement Docker pour Oracle 11g XE
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
[Introduction à Docker] Créer une image Docker pour l'apprentissage automatique et utiliser le notebook Jupyter
Comment créer un environnement Java en seulement 3 secondes
Comment créer un environnement Docker avec Gradle pour IntelliJ
(Ruby on Rails6) Comment créer un modèle et une table
Comment créer une méthode
Commande Docker pour créer un projet Rails avec un seul coup dans l'environnement sans Ruby
Tutoriel pour créer un blog avec Rails pour les débutants Partie 1
Comment définir et décrire des variables d'environnement à l'aide de Rails zsh
Tutoriel pour créer un blog avec Rails pour les débutants Partie 2
Créez un environnement pour Rails5 et postgresql avec Docker afin que pgadmin puisse également être utilisé
J'ai essayé de créer un environnement de développement padrino avec Docker
Tutoriel pour créer un blog avec Rails pour les débutants Partie 0
Créez un environnement Vue3 avec Docker!
Préparation à la création de l'application Rails
[Rails] Comment exécuter "rails db: create" etc. dans l'environnement de production EC2
[Rails 6] Comment créer un écran de saisie de formulaire dynamique à l'aide de cocoon
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Utilisez Jenkins pour créer dans Docker, puis créez une image Docker.
Créez une image Docker pour redoc-cli et enregistrez-la sur Docker Hub
[Pour ceux qui créent des portefeuilles] Comment utiliser binding.pry avec Docker
Construction de Rails 6 et environnement PostgreSQL avec Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
[Swift5] Comment créer un écran de démarrage