rails 6을 사용하여 Docker 개발 환경을 구축했습니다.

개발 환경


  • macOS Mojave ver.10.14.6
  • Docker ver.19.03.2
  • docker compose ver.1.24.1

  • 나에 대해


  • 독학 1개월째
  • 실수하고 있는 개소, 내용 있으면 꼭 코멘트해 주세요!

  • 문제점



    rails6 개발 환경을 Docker에서 구축하기 위해,
    1. Dockerdile 및 docker-compose.yml 파일을 만듭니다.
    2. 터미널에서 docker-compose up 명령을 실행합니다.
    3. 새로운 터미널에서 docker exec -it 실행. 컨테이너 안으로 들어간다.
    4. 그러나 webpacker가 설치되어 있지 않으면 오류가 발생합니다.

    무무무, 무슨 일이야. .

    Dockerfile



    qiita.rb
    FROM ruby:2.6.5-alpine AS builder
    
    RUN apk --update add --virtual build-dependencies \
        build-base \
        curl-dev \
        mysql-dev \
        linux-headers
    
    RUN gem install bundler
    
    WORKDIR /tmp
    
    COPY Gemfile Gemfile
    COPY Gemfile.lock Gemfile.lock
    
    ENV BUNDLE_JOBS=4
    
    RUN bundle install
    RUN apk del build-dependencies
    
    FROM ruby:2.6.5-alpine
    
    RUN apk --update add \
        bash \
        nodejs \
        mariadb-dev \
        tzdata \
        yarn 
    
    RUN gem install bundler
    
    WORKDIR /tmp
    COPY --from=builder /usr/local/bundle /usr/local/bundle
    
    ENV APP_HOME /myapp
    RUN mkdir -p $APP_HOME
    WORKDIR $APP_HOME
    COPY . $APP_HOME
    

    docker-compose.yml



    qiita.rb
    version: '3'
    services:
    
      mysql:
       image: mysql:8.0.17
       command: --default-authentication-plugin=mysql_native_password
       volumes:
         - "./mysql-data:/var/lib/mysql"
       environment:
          MYSQL_ROOT_PASSWORD: root
    
      app:
        build: .
        command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
        volumes:
          - ".:/app"
        ports:
          - "3000:3000"
        tty: true
        depends_on:
         - mysql
        working_dir: "/app"
    

    해결 방법


  • Docker-compose.yml 파일에 bin에 webpacker-dev-server를 작성하는 설명을 추가했습니다.
    비슷한 작업을 터미널에서 실행합니다. . . 마침내 성공했습니다!

  • qiita.rb
    version: '3'
    services:
    
      mysql:
       image: mysql:8.0.17
       command: --default-authentication-plugin=mysql_native_password
       volumes:
         - "./mysql-data:/var/lib/mysql"
       environment:
          MYSQL_ROOT_PASSWORD: root
    
      app:
        build: .
        command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
        volumes:
          - ".:/app"
        ports:
          - "3000:3000"
        tty: true
        depends_on:
         - mysql
        working_dir: "/app"
    
      webpacker:
        build: .
        command: bundle exec bin/webpack-dev-server
    
    



    마지막으로



    처음 Docker에서의 환경 구축, 고생했지만 일단 이것으로 성공했습니다. 여기에서 앱 만들기를 처음 갑니다! !
    또, 이번의 순서로 「그 밖에도 이런 방법 있어!」, 「여기 잘못하고 있어!」라든가 여러 선배님의 지적도 기다리고 있습니다!
    끝까지 봐 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기