docker에서 "Rails API 모드 및 React Hooks를 사용하여 ToDo 목록 만들기"구성
의 목적
이것도 했던 일의 메모를 목적으로 한다.
Know How보다는 How to method 콘텐츠.
배경.
백엔드와 전단을 나눈 프로그램을 도커 뒤에 두지 않았기 때문이다.
어렵게 해서 기사로 만들려고 했어요.
대강
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_back
와 entrypoint.sh
는 docker-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가 발생했다.
다시 시작하면 다음 프로세스로 들어갈 수 있습니다.
뭐랄까, 도커를 많이 배우는 게 좋을 것 같아.
Reference
이 문제에 관하여(docker에서 "Rails API 모드 및 React Hooks를 사용하여 ToDo 목록 만들기"구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nicoryo/articles/2020121402tech텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)