docker에서 "Rails API 모드 및 React Hooks를 사용하여 ToDo 목록 만들기"구성

의 목적


이것도 했던 일의 메모를 목적으로 한다.
Know How보다는 How to method 콘텐츠.

배경.


백엔드와 전단을 나눈 프로그램을 도커 뒤에 두지 않았기 때문이다.
어렵게 해서 기사로 만들려고 했어요.

대강

  • docker-compose.준비yml
  • Backend용 Docker file 준비
  • entrypoint.준비sh
  • Docker file(Fronted용) 준비
  • rails측의 조정
  • axiosmaterial-ui의 설치
  • 해보자!

    docker-compose.yml


    기존 rails 프로그램 등에서'이후 docker 시작'을 준비해도
    앱을 만들기 시작했을 때도 하는 일은 거의 달라지지 않았다.
    docker-compose.홈 디렉터리에 yml을 놓습니다.
    docker-compose.yml
    version: '3'
    services:
      db:
        image: mysql:5.6
        environment:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: root
        volumes:
          - mysql-data:/var/lib/mysql 
        ports:
          - "4306:3306" #別件で3306は使っていたので4306を指定しました
    
      app:
        build: 
          context: .
          dockerfile: Dockerfile_back
        command: /bin/sh -c "rm -f /myapp/tmp/pids/server.pid && bundle exec rails s -p 3001 -b '0.0.0.0'"
        image: rails:dev
        volumes:
          - .:/myapp    #myappというところは任意で設定してください
          - ./app/vendor/bundle:/myapp/vendor/bundle 
        environment:
          TZ: Asia/Tokyo
          RAILS_ENV: development
        ports:
          - "3001:3001"
        depends_on: 
          - db
    
      front:
        build: 
          context: todo_front
          dockerfile: Dockerfile_front
        volumes:
          - ./todo_front:/todo_front
        command: /bin/sh -c "cd todo_front && yarn && yarn start"
        ports:
          - "3000:3000"
    
    volumes:
      mysql-data:
      bundle: 
    

    Docker file 준비(백엔드용)


    entrypoint.주식을 준비하다


    Rubby 버전과 기존 rails 애플리케이션의 Ruby 버전을 결합합니다.
    그거랑 마이앱은 임의로.합쳐도 오케이!
    SQL 입력mysql-client 중 오류가 발생했습니다.
    언제 통일되었는지 모르겠다maliadb-client.Dockerfile_backentrypoint.shdocker-compose.yml와 같은 디렉터리 등급에 있다.
    Dockerfile_back
    FROM ruby:2.6.3
    
    RUN apt-get update && \
        apt-get install -y mariadb-client nodejs vim
    
    RUN mkdir /myapp
    
    WORKDIR /myapp
    
    ADD Gemfile /myapp/Gemfile
    ADD Gemfile.lock /myapp/Gemfile.lock
    
    RUN gem install bundler
    RUN bundle install
    
    ADD . /myapp
    
    COPY entrypoint.sh /usr/bin/
    RUN chmod +x /usr/bin/entrypoint.sh
    ENTRYPOINT ["entrypoint.sh"]
    EXPOSE 3001
    
    CMD ["rails", "server", "-b", "0.0.0.0"]
    
    entrypoint.sh
    #!/bin/bash
    set -e
    
    # Remove a potentially pre-existing server.pid for Rails.
    rm -f /myapp/tmp/pids/server.pid
    
    # Then exec the container's main process (what's set as CMD in the Dockerfile).
    exec "$@"
    

    Docker file(fronted용)

    todo_front 디렉토리에 있습니다.
    Dockerfile_front
    FROM node:14
    

    Rails 강 조정


    내가 너를host:db`로 바꿔 줄게.
    database.yml
    default: &default
      adapter: mysql2
      encoding: utf8mb4
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: root
      password:
    - socket: /tmp/mysql.sock
    + host: db
    

    axiosmaterial-ui의 설치


    백스테이지에서 컨테이너를 가동하다.
    그리고 axios와material-ui를 설치합니다.
    참고로 database.yml'を調整してあげます。 socket通信になっているので、는 용기가 작동된 상태에서 사용할 수 있다.
    컨테이너는 일어설 때 사용하지 않는다exec.
    종료 후 제작run, 자체 조정, 재배 완료.
    console
    $ docker-compose up -d #コンテナを立ち上げる
    $ docker-compose exec front npm install axios
    $ docker-compose exec front npm install @material-ui/core
    $ docker-compose exec app bin/rails db:create
    $ docker-compose exec app bin/rails db:migrate
    $ docker-compose exec app bin/rails db:seed
    
    방문db하면 지난번과 같은 화면으로 일어서겠지.
    끝맺다

    끝맺다


    이번에 docker for Mac의 상태가 좋지 않아서 여러 번attach가 발생했다.
    다시 시작하면 다음 프로세스로 들어갈 수 있습니다.
    뭐랄까, 도커를 많이 배우는 게 좋을 것 같아.

    좋은 웹페이지 즐겨찾기