Docker를 Ruby on Rails의 조합으로 구성합니다!
현재 상태
안녕하세요, Qiita의 첫 투고입니다!
잘못된 점이 있다고 생각해요. 그때 부드럽게 말해주세요(웃음)
이번에는 Aws와 Docker를 사용하여 생성된 Rails 포트폴리오를 배포합니다.
현재 상태는 rails와 Aws로 만든 조합이지만 환경 구축이 힘들다고 생각해서 코드로 환경 주위의 Docker를 관리하기 쉽게 조합을 특별히 배치하고 싶습니다.
구조도
배치할 때의 구조도는 다음과 같다.
아주 간단하게 설명하면 클라이언트에서 통신 요청을 하면 Nginx에 가서 동적 처리를 해야 할 때puma에 대해 통신을 하고 그때puma와 mysql도 통신의 절차가 된다.
이번에는 Docker로 이 구성을 만들고 싶어요.
필요한 물건
이번 배포에서는 Aws의 EC2 및 RDS를 사용합니다.
Docker를 사용하여 환경을 구축하지만 데이터의 영구화 관점에서 볼 때 이번 데이터베이스는 Docker가 아니라 RDS의 Mysql이다.
다음은 숙제에 필요한 준비와 숙제입니다.
· Aws에서 EC2, RDS를 사용하여 배포할 때 필요한 준비(네트워크 구조 등)
・ 로컬 환경 및 Ec2에 Dokcer 설치
・ 로컬 환경 및 Ec2에 Docker-compose 설치
참고 보도
EC2에서 Rails 애플리케이션에 Docker(Rails, Nginx, RDS) 배포
Rails On Docker의 AWS 배포가 완료되었기 때문에 컨텐츠를 정리합니다.
작업
먼저 Docker 파일을 생성합니다.
여기서 Dockerfile을 사용하여 루비 주위의 환경을 구축하는 코드를 작성합니다.FROM ruby:2.5.7
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
vim
RUN mkdir /アプリの名前
WORKDIR /アプリの名前
ADD Gemfile /アプリの名前/Gemfile
ADD Gemfile.lock /アプリの名前/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /アプリの名前
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
다음은 Docker-compose를 만드는 것입니다.
여기서 Docker 컨테이너 관리와 망토를 할 곳을 지정합니다!
Docker-compose.ymlversion: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/アプリの名前:cached
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
- log-data:/アプリの名前/log
web:
build:
context: containers/nginx
volumes:
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
ports:
- 80:80
volumes:
public-data:
tmp-data:
log-data:
다음 파일을 만듭니다.
여기서 Nginx 컨테이너를 설정합니다.FROM nginx:1.15.8
RUN rm -f /etc/nginx/conf.d/*
ADD nginx.conf /etc/nginx/conf.d/アプリの名前.conf
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
containers/nginx/nginx.confupstream FashionInformation_app {
server unix:///アプリの名前/tmp/sockets/puma.sock;
}
server {
listen 8000;
server_name ドメイン名;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /アプリの名前/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 @アプリの名前;
keepalive_timeout 5;
location @アプリの名前 {
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://アプリの名前;
}
}
Rails 애플리케이션 배포
여기까지 왔는데 EC2에서 클론git!ec2-user@ip-xxx-xx-xx-xxx ~]$ git clone GitHubのリポジトリのURL
이미지 구축 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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
배치할 때의 구조도는 다음과 같다.
아주 간단하게 설명하면 클라이언트에서 통신 요청을 하면 Nginx에 가서 동적 처리를 해야 할 때puma에 대해 통신을 하고 그때puma와 mysql도 통신의 절차가 된다.
이번에는 Docker로 이 구성을 만들고 싶어요.
필요한 물건
이번 배포에서는 Aws의 EC2 및 RDS를 사용합니다.
Docker를 사용하여 환경을 구축하지만 데이터의 영구화 관점에서 볼 때 이번 데이터베이스는 Docker가 아니라 RDS의 Mysql이다.
다음은 숙제에 필요한 준비와 숙제입니다.
· Aws에서 EC2, RDS를 사용하여 배포할 때 필요한 준비(네트워크 구조 등)
・ 로컬 환경 및 Ec2에 Dokcer 설치
・ 로컬 환경 및 Ec2에 Docker-compose 설치
참고 보도
EC2에서 Rails 애플리케이션에 Docker(Rails, Nginx, RDS) 배포
Rails On Docker의 AWS 배포가 완료되었기 때문에 컨텐츠를 정리합니다.
작업
먼저 Docker 파일을 생성합니다.
여기서 Dockerfile을 사용하여 루비 주위의 환경을 구축하는 코드를 작성합니다.FROM ruby:2.5.7
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
vim
RUN mkdir /アプリの名前
WORKDIR /アプリの名前
ADD Gemfile /アプリの名前/Gemfile
ADD Gemfile.lock /アプリの名前/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /アプリの名前
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
다음은 Docker-compose를 만드는 것입니다.
여기서 Docker 컨테이너 관리와 망토를 할 곳을 지정합니다!
Docker-compose.ymlversion: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/アプリの名前:cached
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
- log-data:/アプリの名前/log
web:
build:
context: containers/nginx
volumes:
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
ports:
- 80:80
volumes:
public-data:
tmp-data:
log-data:
다음 파일을 만듭니다.
여기서 Nginx 컨테이너를 설정합니다.FROM nginx:1.15.8
RUN rm -f /etc/nginx/conf.d/*
ADD nginx.conf /etc/nginx/conf.d/アプリの名前.conf
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
containers/nginx/nginx.confupstream FashionInformation_app {
server unix:///アプリの名前/tmp/sockets/puma.sock;
}
server {
listen 8000;
server_name ドメイン名;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /アプリの名前/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 @アプリの名前;
keepalive_timeout 5;
location @アプリの名前 {
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://アプリの名前;
}
}
Rails 애플리케이션 배포
여기까지 왔는데 EC2에서 클론git!ec2-user@ip-xxx-xx-xx-xxx ~]$ git clone GitHubのリポジトリのURL
이미지 구축 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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
EC2에서 Rails 애플리케이션에 Docker(Rails, Nginx, RDS) 배포
Rails On Docker의 AWS 배포가 완료되었기 때문에 컨텐츠를 정리합니다.
작업
먼저 Docker 파일을 생성합니다.
여기서 Dockerfile을 사용하여 루비 주위의 환경을 구축하는 코드를 작성합니다.FROM ruby:2.5.7
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
vim
RUN mkdir /アプリの名前
WORKDIR /アプリの名前
ADD Gemfile /アプリの名前/Gemfile
ADD Gemfile.lock /アプリの名前/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /アプリの名前
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
다음은 Docker-compose를 만드는 것입니다.
여기서 Docker 컨테이너 관리와 망토를 할 곳을 지정합니다!
Docker-compose.ymlversion: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/アプリの名前:cached
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
- log-data:/アプリの名前/log
web:
build:
context: containers/nginx
volumes:
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
ports:
- 80:80
volumes:
public-data:
tmp-data:
log-data:
다음 파일을 만듭니다.
여기서 Nginx 컨테이너를 설정합니다.FROM nginx:1.15.8
RUN rm -f /etc/nginx/conf.d/*
ADD nginx.conf /etc/nginx/conf.d/アプリの名前.conf
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
containers/nginx/nginx.confupstream FashionInformation_app {
server unix:///アプリの名前/tmp/sockets/puma.sock;
}
server {
listen 8000;
server_name ドメイン名;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /アプリの名前/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 @アプリの名前;
keepalive_timeout 5;
location @アプリの名前 {
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://アプリの名前;
}
}
Rails 애플리케이션 배포
여기까지 왔는데 EC2에서 클론git!ec2-user@ip-xxx-xx-xx-xxx ~]$ git clone GitHubのリポジトリのURL
이미지 구축 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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM ruby:2.5.7
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
vim
RUN mkdir /アプリの名前
WORKDIR /アプリの名前
ADD Gemfile /アプリの名前/Gemfile
ADD Gemfile.lock /アプリの名前/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /アプリの名前
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
version: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/アプリの名前:cached
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
- log-data:/アプリの名前/log
web:
build:
context: containers/nginx
volumes:
- public-data:/アプリの名前/public
- tmp-data:/アプリの名前/tmp
ports:
- 80:80
volumes:
public-data:
tmp-data:
log-data:
FROM nginx:1.15.8
RUN rm -f /etc/nginx/conf.d/*
ADD nginx.conf /etc/nginx/conf.d/アプリの名前.conf
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
upstream FashionInformation_app {
server unix:///アプリの名前/tmp/sockets/puma.sock;
}
server {
listen 8000;
server_name ドメイン名;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /アプリの名前/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 @アプリの名前;
keepalive_timeout 5;
location @アプリの名前 {
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://アプリの名前;
}
}
여기까지 왔는데 EC2에서 클론git!
ec2-user@ip-xxx-xx-xx-xxx ~]$ git clone GitHubのリポジトリのURL
이미지 구축 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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[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
공공 IP에 접근해서 정확하게 표시하면 성공!
Reference
이 문제에 관하여(Docker를 Ruby on Rails의 조합으로 구성합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suguru-3u/items/9022b11128dcaa7eb10d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)