nomore
16
2020-05-25 10:27:26 작성 2020-05-25 10:28:10 수정됨
2
707

선배님들 장고drf, 리액트, nginx의 도커 배포 질문이 있습니다


웹 쪽은 초보 개발자입니다. 급하게 프로젝트를 맞게되어서 장고 공부보다 drf먼저 익혀가면서 웹사이트를 만들고 있습니다.

현재 디비 컨테이너는 셋팅되어 있고, 장고 drf를 이용한 백엔드 api서버는 gunicorn으로 nginx 컨테이너와 연결해놓은 상태입니다. api는 70%정도 만들어진것 같아서 리액트 급하게 공부하면서 프론트 화면 만들고 있는데, api연결 테스트 하려면 이것도 빨리 도커 컨테이너를 만들어야겠더라구요.

근데 이미 nginx는 api서버에 연결해놓았고 리액트는 어떻게 띄워야 하는지 고민이 많습니다. 좀 찾아보니 

1. 백엔드, 프론트엔드, nginx 컨테이너를 따로 만드는 방법이 있고

2. 리액트를 api컨테이너 안에 넣어서 api호출은 호컬호스트로 하는 방법이 있을것 같습니다. 근데 이건 api 외부에서 호출이 안되서 좀 별로인것 같습니다.

3. 이건 제생각인데... nginx 컨테이너를 하나 더 만들어서.. 프론트에 연결...  이건 좀 아니죠?


현재 docker-compose 파일입니다.

version: '2'

services:
  db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - 환경변수
      - "3307:3306"

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - .:/code
      - ./config/nginx:/etc/nginx/conf.d
      - /static:/static
    depends_on:
      - backend

  redis:
    image: "redis:alpine"
    restart: always

  backend:
    build: 
      context: ./backend
      dockerfile: Dockerfile
    environment:
      - DJANGO_DATABASE_ENGINE=django.db.backends.mysql
      - 환경변수
    ports:
      - "8080:8080"
    depends_on:
      - db
      - redis
    links:
      - db
      - redis
    command:
      - /backend/start-dev.sh
    volumes:
      - ./backend/:/app/backend/


현재 폴더 구조입니다.

- 프로젝트폴더

    - backend: drf 프로젝트

    - config: nginx 설정 파일이 있습니다

    - .static_root: 장고의 스태틱루트 폴더입니다

    - 기타 파일들: .gitignore, readme.md 등


리액트 프론트 페이지를 어떻게 띄워야 좋을까요? 선배님들의 고견을 구해봅니다.


0
  • 답변 2

  • nomore
    16
    2020-05-25 10:33:25

    아 그리고, 장고는 runserver로 테스트하고, 실서버에서는 gunicorn으로 nginx와 연결해야 성능이 더 좋다고 해서 그렇게 했는데 리액트는 yarn start또는 npm start 말고 다른 방법이 있을까요?

  • 삼이
    1k
    2020-05-25 10:41:35
  • 로그인을 하시면 답변을 등록할 수 있습니다.