Docker를 사용하여 Rails 시작
최초의 준비
app_name/아래에 다음 다섯 개의 파일을 준비합니다
- Gemfile
- Gemfile.lock
- entrypoint.sh
- Dockerfile
- docker-compose.yml
Gemfilesource 'https://rubygems.org'
ruby '2.5.1'
gem 'rails', '~> 5.2.3'
Gemfile.lock(空でいい)
entrypoint.sh#!/bin/bash
set -e
rm -f ./tmp/pids/server.pid
exec "$@"
DockerfileFROM ruby:2.5.1
ENV LANG C.UTF-8
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
nodejs
ENV APP_DIR /app_name
RUN mkdir -p APP_DIR
WORKDIR $APP_DIR
COPY Gemfile $APP_DIR
COPY Gemfile.lock $APP_DIR
RUN gem install bundler && bundle install
COPY . $APP_DIR
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
docker-compose.ymlversion: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- sql-data:/var/lib/mysql
web:
build: .
tty: true
stdin_open: true
ports:
- "3000:3000"
volumes:
- .:/app_name
- gem-data:/usr/local/bundle
depends_on:
- db
volumes:
gem-data:
sql-data:
공사를 시작하다
app_다음 작업을 name/에서 수행합니다.
1, 프로젝트를 만들려면 다음과 같이 하십시오.$ docker-compose run web rails new . --force --database=mysql --skip-bundle
2password 설정:$ grep -l 'password:' config/database.yml | xargs sed -i.bak -e 's/password:/password: password/g'
3host 이름 바꾸기:$ grep -l 'host: localhost' config/database.yml | xargs sed -i.bak -e 's/host: localhost/host: db/g'
4, 컨테이너 구성:$ docker-compose build
5, 컨테이너 내 bundle install:$ docker-compose run web bundle install
6, DB 생성docker-compose run web rails db:create
7, 컨테이너 시동:$ docker-compose up
3000으로 액세스
Reference
이 문제에 관하여(Docker를 사용하여 Rails 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tacohachii/items/ec1732d9e6f6acfa16af
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
source 'https://rubygems.org'
ruby '2.5.1'
gem 'rails', '~> 5.2.3'
(空でいい)
#!/bin/bash
set -e
rm -f ./tmp/pids/server.pid
exec "$@"
FROM ruby:2.5.1
ENV LANG C.UTF-8
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
nodejs
ENV APP_DIR /app_name
RUN mkdir -p APP_DIR
WORKDIR $APP_DIR
COPY Gemfile $APP_DIR
COPY Gemfile.lock $APP_DIR
RUN gem install bundler && bundle install
COPY . $APP_DIR
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- sql-data:/var/lib/mysql
web:
build: .
tty: true
stdin_open: true
ports:
- "3000:3000"
volumes:
- .:/app_name
- gem-data:/usr/local/bundle
depends_on:
- db
volumes:
gem-data:
sql-data:
app_다음 작업을 name/에서 수행합니다.
1, 프로젝트를 만들려면 다음과 같이 하십시오.
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
2password 설정:$ grep -l 'password:' config/database.yml | xargs sed -i.bak -e 's/password:/password: password/g'
3host 이름 바꾸기:$ grep -l 'host: localhost' config/database.yml | xargs sed -i.bak -e 's/host: localhost/host: db/g'
4, 컨테이너 구성:$ docker-compose build
5, 컨테이너 내 bundle install:$ docker-compose run web bundle install
6, DB 생성docker-compose run web rails db:create
7, 컨테이너 시동:$ docker-compose up
3000으로 액세스Reference
이 문제에 관하여(Docker를 사용하여 Rails 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tacohachii/items/ec1732d9e6f6acfa16af텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)