Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ep21 : Flask 인스타그램 클론코딩 (12) #30

Open
TGoddessana opened this issue Jan 9, 2023 · 4 comments
Open

Ep21 : Flask 인스타그램 클론코딩 (12) #30

TGoddessana opened this issue Jan 9, 2023 · 4 comments

Comments

@TGoddessana
Copy link
Collaborator

TGoddessana commented Jan 9, 2023

Ep20 에서는, 아래의 내용을 다룹니다.

  • 우리는 배포를 위해서 Docker 를 사용할 겁니다. Docker 에서 우분투 이미지를 사용하는 것과, 우분투 운영체제 전체를 설치하는 것이 무엇이 다른지를 살펴봅니다.
  • 예전에, 이미지 업로드 전에 알아봤던 Nginx 와 uwsgi 를 사용해서, werkzeug 의 내장 서버보다 안정적이고 성능 좋은 백엔드 API 서버를 배포합니다.
  • Dockerfile 을 이용해서 우리가 배포하고자 하는 모든 구성들을 컨테이너화합니다. "단순히 작성 후 빌드하고 나니까 되네?" 가 아니라, 작성한 Dockerfile을 한줄한줄 뜯어보며 왜 그렇게 동작하는지 파악합니다.
  • 80번 포트, 443번 포트를 국제 인터넷 표준화 기구의 문서를 알아봅니다.
  • "불필요하고 반복되는 작업은 개발자를 불편하게 해요!" 라는.. 방금 지어낸 말이 있습니다. Github action 을 사용해서, 본인에게 알맞는 배포 전략을 선택하고 적용해 봅니다. 참고 자료의 경우, "메인 브랜치에 병합되었을 때, 원격 서버에 자동 배포하기" 를 구현합니다.

(참고) https://gdsanadev.com/16169

(과제 1) 위의 전략에 따라 백엔드 서버 배포를 완료하고, 댓글에 배포된 서버의 링크(https://flastagram-api-server.fly.dev/) 링크를 달아주세요.

(과제 2) 우리가 작성한 express 서버를 Nginx와 함께 이미지로 빌드하고, 작동하는 Dockerfile 을 공유해 주세요. Dockerfile 은 아래의 기본 조건을 모두 만족해야 합니다.

  • (기본) 이미지를 빌드하고 컨테이너를 실행했을 때, 프론트엔드 서버는 80번 포트를 듣고 있어야 합니다.
  • (기본) Nginx 에서는 정적 파일을 서빙할 수 있어야 합니다.

(과제 3) 작성한 API 서버에는 생각보다 많은 엔드포인트가 존재합니다. 이러한 엔드포인트들에 있어서, 기능이 부실하거나 보안적으로 이슈가 있다고 생각하는 부분을 개선하는 과정을 블로그에 정리해 주세요!

@overtae
Copy link
Member

overtae commented Jan 15, 2023

과제 1

과제 2

  • Dockerfile
FROM node:15.11.0-alpine

COPY . /app
WORKDIR /app

RUN apk update && \
    apk add nginx

RUN npm install

ENV NODE_ENV=production

RUN chmod +x /app/deploy/entrypoint.sh
ENTRYPOINT [ "/app/deploy/entrypoint.sh" ]

CMD node server.js
  • nginx.conf
user root;

events{}

http{
        #Client upstream
        upstream server {
                server host.docker.internal:5001 max_fails=3 fail_timeout=30s;
                server host.docker.internal:5002 max_fails=3 fail_timeout=30s;
        }

        server {
                listen 80;

                location / {
		        proxy_pass http://server;
	        }

                location /statics/  {
                alias /app/assets/img/;
                }
        }
}

구동 안됩니다. 모르겠어요 ㅠ.ㅠ

과제 3

@TGoddessana
Copy link
Collaborator Author

과제 1

과제 2

  • Dockerfile
FROM node:15.11.0-alpine

COPY . /app
WORKDIR /app

RUN apk update && \
    apk add nginx

RUN npm install

ENV NODE_ENV=production

RUN chmod +x /app/deploy/entrypoint.sh
ENTRYPOINT [ "/app/deploy/entrypoint.sh" ]

CMD node server.js
  • nginx.conf
user root;

events{}

http{
        #Client upstream
        upstream server {
                server host.docker.internal:5001 max_fails=3 fail_timeout=30s;
                server host.docker.internal:5002 max_fails=3 fail_timeout=30s;
        }

        server {
                listen 80;

                location / {
		        proxy_pass http://server;
	        }

                location /statics/  {
                alias /app/assets/img/;
                }
        }
}

구동 안됩니다. 모르겠어요 ㅠ.ㅠ

과제 3

지금 배포된 서버 500 에러뜨는 것 같은데 확인 부탁드림니다..!

@youngjoo00
Copy link
Member

@2gang
Copy link

2gang commented Jan 20, 2023

과제1

과제2
Dockfile

FROM python:3.10-alpine

COPY . /app
WORKDIR /app

RUN apk update && \
    apk add \
            nginx \
            build-base \
            linux-headers 

RUN pip3 install --upgrade pip && \
    pip install -r requirements/common.txt && pip install -r requirements/prod.txt \
    && pip install -r requirements/dev.txt

RUN chmod +x /app/deploy/entrypoint.sh
ENTRYPOINT [ "/app/deploy/entrypoint.sh" ]

@TGoddessana TGoddessana changed the title Ep20 : Flask 인스타그램 클론코딩 (12) Ep21 : Flask 인스타그램 클론코딩 (12) Jan 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants