Ruby제 ServerlessFramework【Jets】를 Docker로 환경 구축
10182 단어 serverless람다Jets도커AWS
Jets
공식 페이지
구성도 (공식 페이지에서 인용)
환경 구축
프로젝트 만들기
우선은 Jets 자체를 인스톨 해 프로젝트를 작성하는 곳까지를 실시합니다.
Docker를 사용하여 컨테이너 내에 프로젝트를 빌드합니다.
Dockerfile을 아래와 같이 작성.
FROM ruby:2.5.1
WORKDIR /usr/src/app
# For Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get update && \
apt-get install -y \
mysql-client \
nodejs \
build-essential \
vim \
zip \
unzip \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Install yarn
RUN curl -o- -L https://yarnpkg.com/install.sh | bash
ENV PATH="/root/.yarn/bin:$PATH"
ENV LANG=ja_JP.UTF-8
RUN gem install jets
Docker Build하여
jets new [プロジェクト名]
명령으로 프로젝트를 만듭니다.$ docker build -t jets/sample .
$ docker run --rm -v `pwd`:/usr/src/app -t jets/sample jets new myapp
이제 프로젝트를 만들 수 있었으므로 사용한 Dockerfile은 일단 삭제합니다.
시작하고 톱 화면 표시까지
만든 프로젝트 아래에 새
Dockerfile
및 docker-compose.yml
, bin/start_server.sh
를 추가합니다.FROM ruby:2.5.1
WORKDIR /usr/src/app
# For Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get update && \
apt-get install -y \
mysql-client \
nodejs \
build-essential \
vim \
zip \
unzip \
rsync \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Install yarn
RUN curl -o- -L https://yarnpkg.com/install.sh | bash
ENV PATH="/root/.yarn/bin:$PATH"
ENV LANG=ja_JP.UTF-8
ADD Gemfile /usr/src/app/
ADD Gemfile.lock /usr/src/app/
RUN bundle install --system
ADD . /usr/src/app
RUN jets webpacker:install
EXPOSE 8888
CMD bin/start_server.sh
docker-compose.yml
version: '3'
volumes:
gem_data:
driver: local
db_data:
driver: local
services:
app:
build:
context: .
dockerfile: ./Dockerfile
environment:
DB_HOST: db
BUNDLE_JOBS: 4
BUNDLE_PATH: /usr/local/bundle
ports:
- '8888:8888'
volumes:
- .:/usr/src/app
- gem_data:/usr/local/bundle
command:
bin/start_server.sh
depends_on:
- db
db:
image: mysql:5.6
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- '3306:3306'
volumes:
- db_data:/var/lib/mysql
bin/start_server.sh
#!/bin/bash
set -e
source ~/.bashrc
bundle exec jets db:create db:migrate
bundle exec jets server --host 0.0.0.0
여기까지 한 번
docker-compose up
합니다.http://localhost:8888
에 브라우저로 접속해 아래의 화면이 표시되면 OK입니다.구현
로컬로 간단한 샘플 이동
공식 페이지의 빠른 시작 의 내용을 시험해 봅니다.
실행중인 컨테이너에 들어갑니다.
$ docker exec -it [コンテナのID] bash
scaffold
를 사용하여 간단한 병아리를 만듭니다.$ jets generate scaffold Post title:string
$ jets db:create db:migrate
여기까지 실행하여 브라우저에서 http://localhost:8888/posts
작성한 Post의 CRUD 화면이 표시되면 OK입니다.
AWS 환경에 배포
다시 컨테이너에 들어가 AWS 비밀 키 설정을 구성합니다.
$ export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXX
설정이 완료되면 즉시 배포해 봅니다.
$ jets deploy
Stack success status: UPDATE_COMPLETE
Time took for stack deployment: 2m 35s.
Prewarming application.
API Gateway Endpoint: https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/
마지막으로 출력되는 API Gateway의 URL에 액세스하여 톱 화면이 표시되면 OK입니다.
나쁜 노하우
http://localhost:8888
에 액세스 할 수 없습니다. --host 0.0.0.0
를 지정하여 실행start_server.sh
jets server --host 0.0.0.0
/usr/local/bundle/gems/jets-1.6.4/lib/jets/builders/code_builder.rb:37:in `chdir': No such file or directory @ dir_chdir - /tmp/jets/app/stage/code (Errno::ENOENT)
또는,
rsync -a --links /tmp/jets/app/stage/code/vendor/gems/ruby/2.5.0/ /tmp/jets/app/stage/opt/ruby/gems/2.5.0/ failed to run.
-> 둘 다
rsync
가 설치되어 있지 않으므로 Dockerfile을 검토하십시오.참고 URL
Reference
이 문제에 관하여(Ruby제 ServerlessFramework【Jets】를 Docker로 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Slowhand0309/items/b56809551d9ebf3f30e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)