Docker+Django+Next+TypeScript+ECS로 웹 앱을 만든 이야기(1) ~ 준비편 ~
10936 단어 next.js장고ECS도커graphene-django
소개
내 자신의 취업으로 Docker, Django(graphene-django), Next.js, TypeScript, ECS를 사용하여 포트폴리오를 만들었습니다.
각각의 기술에 관해서, 독학으로 구현하는데 고전했기 때문에, 자신의 기록용으로서, 기능의 일부(유저 인증만)의 제작 과정을 썼습니다.
길어지기 때문에 여러 번 나누어 써 가려고 생각합니다.
다음 기사 : Docker + Django + Next + TypeScript + ECS로 앱을 만든 이야기 (2) ~ Django의 초기 설정에서 Model 작성편 ~
실제로 만든 웹 앱의 URL입니다.
Tresapo : ht tp // 료 t 라이 마늘 g 마나게 멘 t. 코m/
각각의 기술을 채용한 이유
개발 환경
1. 프로젝트 바로 아래에 파일, 폴더 만들기
폴더 구성은 다음과 같습니다.myProject/
app/
frontend/
Dockerfile
Dockerfile-node
docker-compose.yml
requirements.txt
Makefile
myProject/
app/
frontend/
Dockerfile
Dockerfile-node
docker-compose.yml
requirements.txt
Makefile
백엔드용 Dockerfile. ECS에 배포하는 편의상, dockerhub에서 python의 이미지를 pull 할 때 M1의 Mac이라면 amd64가 아닌 아키텍처를 기본적으로 취득하기 때문에 아키텍처를 지정하고 있습니다.
CMD에 관해서는, 프로덕션용에 기재하고 있어, django의 settings를 프로덕션용과 개발 환경용으로 나누고 있다. 개발 환경에서는 docker-compose에서 명령을 덮어 씁니다.
Dockerfile
FROM python@sha256:73c7d5d218ff9e2d76f41edcc1bd4f71961f7551ea7b2e39ab8b4793cede21b4
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client jpeg-dev
RUN apk add --update --no-cache --virtual .tmp-build-deps \
gcc libc-dev linux-headers postgresql-dev musl-dev zlib zlib-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps
RUN mkdir /app
WORKDIR /app
COPY ./app /app
RUN mkdir -p /vol/web/media
RUN mkdir -p /vol/web/static
RUN adduser -D user
RUN chown -R user:user /vol/
RUN chmod -R 755 /vol/web
USER user
CMD sh -c "python manage.py migrate --settings app.prod_settings && python manage.py runserver 0.0.0.0:8000 --settings app.prod_settings"
프런트 엔드용 Dockerfile. 여기도 마찬가지로 node.js의 이미지를 얻기 위해 아키텍처를 지정합니다.
Dockerfile-nodejs
FROM node@sha256:f5079a4f93c8e4fd07ffa93fc95f6484d7f4f40abd126c11810cb282483ab599
MAINTAINER kanagawa App Developer Ltd
RUN npm config set unsafe-perm true
RUN npm install -g npm
RUN npm install -g create-next-app
RUN mkdir /frontend
WORKDIR /frontend
COPY ./frontend /frontend
CMD sh -c "npm run start"
프런트 엔드, 백엔드 및 DB 컨테이너를 시작하도록 만들고 있습니다.
docker-compose.yml
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
environment:
- FRONT_URI=http://localhost:3000
- ALLOWED_HOST=localhost
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=supersecretpassword
depends_on:
- db
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
- POSTGRES_HOST_AUTH_METHOD=trust
next:
build:
context: .
dockerfile: "./Dockerfile-nodejs"
volumes:
- ./frontend:/frontend
command: sh -c "npm run dev"
ports:
- "3000:3000"
장고에 설치할 패키지를 나열합니다.
requirements.txt
Django==3.1.2
graphene-django==2.13.0
django-filter==2.4.0
django-graphql-jwt==0.3.1
PyJWT==1.7.1
django-cors-headers==3.5.0
psycopg2
factory-boy
pytz
django-environ
gunicorn==20.0.4
Makefile
.PHONY:
app test migrate pro admin django react
app:
docker-compose run --rm app sh -c "python manage.py startapp api"
migrate:
docker-compose run --rm app sh -c "python manage.py makemigrations --settings app.dev_settings"
docker-compose run --rm app sh -c "python manage.py migrate --settings app.dev_settings"
admin:
docker-compose run --rm app sh -c "python manage.py createsuperuser --settings app.dev_settings"
django:
docker-compose run --rm app sh -c "django-admin startproject app ."
next:
docker-compose run --rm next sh -c "npx create-next-app . --ts"
django-test:
docker-compose run --rm app sh -c "python manage.py test --settings app.dev_settings"
다음 명령으로 프런트 엔드 및 백엔드 이미지 만들기
$ docker-compose build
2.Next.js 프로젝트 만들기
다음 명령으로 next.js 프로젝트 만들기$ make next
3. 장고 프로젝트 만들기
다음 명령으로 장고 프로젝트 만들기$ make django
다음 명령으로 장고에 애플리케이션 추가$ make app
4. 동작 확인
한 번 컨테이너를 모두 멈추고 컨테이너를 시작해 보겠습니다.$ docker-compose stop
$ docker-compose up
localhost : 3000에 액세스하면 다음 화면이 표시됩니다.
localhost:8000에 액세스하면 다음 화면이 표시됩니다.
요약
이번은 Dodker에서의 환경 구축과 Next.js, Django의 프로젝트를 작성해, 기동 확인하는 곳까지 썼습니다.
다음은 Django 프로젝트의 초기 설정에서 Model 작성까지의 장소를 쓰고 싶습니다.
다음 기사 : [Docker + Django + Next + TypeScript + ECS로 앱을 만든 이야기 (2) ~ Django의 초기 설정에서 Model 작성편 ~]
( htps : // 이 m/rys0707/이고 ms/512d4bcf04에 6b2d7f972 )
참고
Reference
이 문제에 관하여(Docker+Django+Next+TypeScript+ECS로 웹 앱을 만든 이야기(1) ~ 준비편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rys0707/items/ebe031c694c30831dc47
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ make next
다음 명령으로 장고 프로젝트 만들기
$ make django
다음 명령으로 장고에 애플리케이션 추가$ make app
4. 동작 확인
한 번 컨테이너를 모두 멈추고 컨테이너를 시작해 보겠습니다.$ docker-compose stop
$ docker-compose up
localhost : 3000에 액세스하면 다음 화면이 표시됩니다.
localhost:8000에 액세스하면 다음 화면이 표시됩니다.
요약
이번은 Dodker에서의 환경 구축과 Next.js, Django의 프로젝트를 작성해, 기동 확인하는 곳까지 썼습니다.
다음은 Django 프로젝트의 초기 설정에서 Model 작성까지의 장소를 쓰고 싶습니다.
다음 기사 : [Docker + Django + Next + TypeScript + ECS로 앱을 만든 이야기 (2) ~ Django의 초기 설정에서 Model 작성편 ~]
( htps : // 이 m/rys0707/이고 ms/512d4bcf04에 6b2d7f972 )
참고
Reference
이 문제에 관하여(Docker+Django+Next+TypeScript+ECS로 웹 앱을 만든 이야기(1) ~ 준비편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rys0707/items/ebe031c694c30831dc47
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ docker-compose stop
$ docker-compose up
이번은 Dodker에서의 환경 구축과 Next.js, Django의 프로젝트를 작성해, 기동 확인하는 곳까지 썼습니다.
다음은 Django 프로젝트의 초기 설정에서 Model 작성까지의 장소를 쓰고 싶습니다.
다음 기사 : [Docker + Django + Next + TypeScript + ECS로 앱을 만든 이야기 (2) ~ Django의 초기 설정에서 Model 작성편 ~]
( htps : // 이 m/rys0707/이고 ms/512d4bcf04에 6b2d7f972 )
참고
Reference
이 문제에 관하여(Docker+Django+Next+TypeScript+ECS로 웹 앱을 만든 이야기(1) ~ 준비편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rys0707/items/ebe031c694c30831dc47
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Docker+Django+Next+TypeScript+ECS로 웹 앱을 만든 이야기(1) ~ 준비편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rys0707/items/ebe031c694c30831dc47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)