J'ai entendu dire que créer un environnement est plus difficile que d'écrire du code.
Et pourquoi,,, ** Copiez et collez simplement ** Cependant, cela peut prendre un certain temps pour comprendre ... Commençons par un bref aperçu
Docker Outils de création d'environnements virtuels
Environnement virtuel lui-même (Docker exécute un conteneur au-dessus du moteur Docker)
Ce dont vous avez besoin pour exécuter un conteneur Docker.
①.
Créer un projet (répertoire) et le déplacer` ``
$ mkdir nom de l'application $ cd nom de l'application ② .``` Créer Dockerfile, docker-compose.yml, Gemfile, Gemfile.lock ''
$ touch Dockerfile docker-compose.yml Gemfile Gemfile.lock
③. ```Ouvrez l'éditeur et copiez Dockerfile, docker-compose.yml, Gemfile à partir de ce qui suit` `` Dockerfile Un fichier qui génère automatiquement une image Docker
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
FROM: Image et commande à utiliser RUN: Exécuter la commande WORKDIR: Paramètres du répertoire de travail COPY: Spécifiez la source de copie (côté hôte) et la destination de copie (côté environnement virtuel) des fichiers ou répertoires
Gemfile source 'https://rubygems.org' gem 'rails', '~> 5.2.3'
docker-compose.yml version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./db/mysql/volumes:/var/lib/mysql
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
- gem_data:/usr/local/bundle
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
volumes:
gem_data:
version: La version de docker-compose. depend_on: affiche les dépendances et vous permet de contrôler l'ordre de démarrage. Ici, commencez par "db → web".
Docker compose est une fonction qui automatise la procédure de création et d'exécution d'un service composé de plusieurs conteneurs et facilite la gestion. Avec Docker compose, vous pouvez préparer un fichier de composition et exécuter la commande une fois pour lire les paramètres de ce fichier et démarrer tous les conteneurs.
Dans Docker compose, chaque élément permettant d'exécuter une application est appelé un service. Habituellement nommé web (rails) et db (mysql).
rm -f tmp / pids / server.pid```Le pid est l'ID de processus. Le pid est écrit dans tmp / pids / server.pid lors du démarrage du serveur Web de développement et supprimé lors de la fermeture. Si pid est écrit dans server.pid, le serveur sera jugé comme ** commençant **.
ports:
- 3000:3000
Ce qui précède signifie que le port 3000 dans le conteneur est mappé à 3000 sur l'hôte. Cela vous permettra d'accéder au serveur Web à l'intérieur du conteneur à l'adresse `` http: // localhost: 3000 ''.
volumes:
- ./db/mysql/volumes:/var/lib/mysql
Signifie de monter ./db/mysql/volumes sur l'hôte dans / var / lib / mysql à l'intérieur du conteneur. En termes simples, le conteneur Docker est ** synchronisé ** localement.
volumes :
- .:/myapp
Désigne tous les répertoires de l'hôte avec
. et le monte sur `` `` myapp
dans le conteneur.
④ .``` Exécutez la commande suivante `` `
$ docker-compose run web rails new . --force --database=mysql
La commande run fera tout, de la création d'une image à la création et au démarrage d'un conteneur. Le service doit être spécifié dans l'argument. Puisque les volumes: -.: / La partie Myapp de docker-compose.yml est configurée pour synchroniser le docker avec le répertoire local, un fichier similaire sera généré localement en même temps après l'exécution de cette commande. ..
⑤.
Remplacez (mot de passe: mot de passe, hôte: db) dans config / database.yml`
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
mot de passe: mot de passe Ajouté #password hôte: db Changé de #localhost à db
⑥. ```Exécuter la commande suivante` ``
$ docker-compose build
Exécutez `` build '' lorsque le Gemfile est mis à jour
⑦ .``` Exécutez la commande suivante `` `
$ docker-compose up -d
Le conteneur démarre selon docker-compose.yml. Également exécuté lors de la prise en compte des modifications dans docker-compose.yml. L'option
-d``` démarre en arrière-plan.
⑧.
Exécutez la commande suivante
$ docker-compose run web rails db:create
Créez une base de données. Vous pouvez exécuter des commandes localement avec
docker-compose run web```. (Pas besoin d'entrer dans le conteneur)
⑨. '' Exécutez la commande suivante et vérifiez si les deux conteneurs sont en place.
(Terminé!)
$ docker ps
Une commande pour afficher le conteneur en cours d'exécution. Lorsque vous accédez à `` localhost: 3000 '', vous verrez l'habituel Yay! You're on Rails!.
`Si vous souhaitez supprimer le conteneur, procédez comme suit
`
$ docker-compose down
Vérifiez si le conteneur a été supprimé avec
docker ps```. Pour créer et démarrer un conteneur, exécutez
docker-compose up -d` ''.
Je pense que c'était assez facile! Développons l'application avec ça! : pouces vers le haut:
Recommended Posts