Docker를 사용하여 Rails 시작

5457 단어 DockeDockerRails
이제부터모든 항목의 이름으로 대체합니다.

최초의 준비


app_name/아래에 다음 다섯 개의 파일을 준비합니다
- Gemfile
- Gemfile.lock
- entrypoint.sh
- Dockerfile
- docker-compose.yml
Gemfile
source '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 "$@"
Dockerfile
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"]
docker-compose.yml
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으로 액세스

좋은 웹페이지 즐겨찾기