Bonjour à tous, c'est le premier post de Qiita! Je pense qu'il y a quelque chose qui ne va pas, mais merci de bien vouloir me le dire à ce moment-là (rires) Cette fois, nous déployons un portefeuille Rails qui a déjà été créé avec Aws et Docker. Dans l'état actuel, j'ai créé un portefeuille à l'aide de rails et d'Aws, mais je pense qu'il est difficile de créer un environnement, et j'aimerais déployer le portefeuille à l'aide de Docker, ce qui facilite la gestion de l'environnement avec du code.
Le diagramme de configuration au moment du déploiement est le suivant. Pour l'expliquer très simplement, lorsqu'une demande de communication provient du client, elle va à Nginx et communique avec puma lorsqu'un traitement dynamique est nécessaire, et à ce moment-là, puma et mysql communiquent également. Cette fois, j'aimerais créer cette configuration à l'aide de Docker.
Lors du déploiement cette fois, nous utiliserons EC2 et RDS d'Aws. Nous allons créer l'environnement avec Docker, mais du point de vue de la persistance des données, nous utiliserons RDS Mysql au lieu de Docker cette fois. Voici les préparatifs et les travaux requis pour le travail.
-Effectuer les préparatifs nécessaires lors du déploiement en utilisant EC2 et RDS avec Aws (configuration réseau, etc.) -Installer Dokcer dans l'environnement local et Ec2 -Installer Docker-compose dans l'environnement local et Ec2
Tout d'abord, créez un fichier Docker. Ici, nous allons écrire le code pour créer l'environnement autour de Ruby à l'aide de Dockerfile.
FROM ruby:2.5.7
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
vim
RUN mkdir /Nom de l'application
WORKDIR /Nom de l'application
ADD Gemfile /Nom de l'application/Gemfile
ADD Gemfile.lock /Nom de l'application/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /Nom de l'application
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
Ensuite, créez un Docker-compose. Ici, nous allons gérer le conteneur Docker et spécifier la pièce à masquer!
Docker-compose.yml
version: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/Nom de l'application:cached
- public-data:/Nom de l'application/public
- tmp-data:/Nom de l'application/tmp
- log-data:/Nom de l'application/log
web:
build:
context: containers/nginx
volumes:
- public-data:/Nom de l'application/public
- tmp-data:/Nom de l'application/tmp
ports:
- 80:80
volumes:
public-data:
tmp-data:
log-data:
Ensuite, créez le fichier suivant. Ici, nous allons configurer le conteneur Nginx.
FROM nginx:1.15.8
RUN rm -f /etc/nginx/conf.d/*
ADD nginx.conf /etc/nginx/conf.d/Nom de l'application.conf
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
containers/nginx/nginx.conf
upstream FashionInformation_app {
server unix:///Nom de l'application/tmp/sockets/puma.sock;
}
server {
listen 8000;
server_nom nom de domaine;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /Nom de l'application/public;
client_max_body_size 100m;
error_page 404 /404.html;
error_page 505 502 503 504 /500.html;
try_files $uri/index.html $uri @Nom de l'application;
keepalive_timeout 5;
location @Nom de l'application{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://Nom de l'application;
}
}
Clonez git vers EC2 lorsque vous arrivez ici!
ec2-user@ip-xxx-xx-xx-xxx ~]$URL du référentiel GitHub git clone
ec2-user@ip-xxx-xx-xx-xxx]$ cd myapp
[ec2-user@ip-xxx-xx-xx-xxx myapp]$ docker-compose build
[ec2-user@ip-xxx-xx-xx-xxx myapp]$ docker-compose run app rails assets:precompile RAILS_ENV=production
[ec2-user@ip-xxx-xx-xx-xxx myapp]$ docker-compose up -d
[ec2-user@ip-xxx-xx-xx-xxx myapp]$ docker-compose exec app rails db:create db:migrate RAILS_ENV=production
Si vous accédez à l'adresse IP publique et qu'elle s'affiche correctement, vous avez réussi!
Recommended Posts