728x90 반응형 Dev./Docker7 [Cloud] 배포 - Docker : 장고 기본 css 파일 매핑 현재 nginx 로 들어오는 요청을 장고 서버포트로 보내주는데 스태틱 파일은 다른데로 보내주게 설정한다. server { listen 80; # server_name http 223.130.133.96; server_name localhost; location / { # 아래의 코드로는 nginx가 실행된 컨테이너의 주소로 보내기 때문에 Bad request 가 뜬다. # proxy_pass ; # 그래서 lion-app 즉 장고가 떠있는 컨테이너의 8000포트로 프록시 패스로 넣어주어야 한다. proxy_pass ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /static/ { alias /var/ww.. Dev./Docker 2023. 8. 12. [Cloud] 배포 - Docker : docker-compose.yml docker-compose.yml 파일은 여러 컨테이너를 함께 정의하고 관리하기 위한 도구 해당 파일을 사용하면 여러 컨테이너, 네트워크, 볼륨 등을 한번에 정의하고 실행할 수 있다. version : 사용하는 docker compose 파일의 버전 services : 실행할 컨테이너의 목록과 설정 networks : 사용할 네트워크의 정의 volumes : 사용할 볼륨의 정의 # docker-compose 파일의 버전을 명시 version: "3" services: # 서비스들의 시작 # 앱 설정 lion-app: container_name: lion-app-dc build: context: lion_app dockerfile: Dockerfile # 사용할 도커 파일의 이름 image: lion-ap.. Dev./Docker 2023. 8. 12. [Cloud] 배포 - Docker : Dockerfile - Django Dockerfile 로 장고 서버를 띄워보자 FROM python:3.11-alpine ARG APP_HOME=/app # 파이썬이 표준출력과 표준에러출력을 버퍼링 하지 않도록 설정 ENV PYTHONUNBUFFERED 1 # 파이썬이 .pyc 바이트코드파일을 작성하지 않도록 설정 ENV PYTHONDONTWRITEBYTECODE 1 WORKDIR ${APP_HOME} # 패키지들은 자주 바뀌지 않기 때문에 인스톨을 따로 가져가는게 좋다. # 만약 전체 카피로만 requirements 를 가져오게 되면 코드가 수정되었을 때 # 다시 인스톨을 해줘야하는 일이 발생하기 때문에 따로 이미지 레이어를 쌓아준다. COPY ./requirements.txt ./ RUN pip install --no-cache-di.. Dev./Docker 2023. 8. 11. [Cloud] 배포 - Docker : Volume Docker volume 컨테이너 위에 있는 데이터는 일시적 데이터이기 때문에 볼륨 맵핑을 통해 영구적으로 데이터를 보존할 수 있게 한다. 뿐만아니라 컨테이너간 데이터의 공유가 필요할 때에도 볼륨을 사용하여 데이터를 주고 받을 수 있다. 로컬 파일 시스템과 도커 파일 시스템을 연결하기 docker run -v /home/lion/mydata:/data -it --name lion-v lion:0.3 /bin/bash 💡 로컬 파일 시스템 경로 /home/lion/mydata 와 도커에서 /data 를 맵핑하면서 lion-v 라는 이름으로 lion 이미지 에 0.3 태그 로 이미지를 만들어 접속하겠다 텍스트 파일을 각각의 경로에서 생성한뒤에 체크해보면 ? # local - /home/lion/mydata .. Dev./Docker 2023. 8. 10. [Cloud] 배포 - Docker : Dockerhub 도커 허브라고 들어봤는가? 도커 이미지를 띄워두고 마치 깃허브처럼 받아서 쓸 수 있게 해놓은 공간이다. public 으로 레파지토리를 생성해둔다. 이후 콘솔에서 docker images lion@likelion:~/dev_django_app$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE lion 0.3 3c97009ef945 2 hours ago 236MB lion 0.2 addb2ef0fbf6 3 hours ago 176MB lion 0.1 da34d62d6cc1 3 hours ago 176MB ... Tag 를 확인하고 새롭게 도커 허브를 위한 태그를 생성해준다. docker image tage lion:0.2 lion:0.2 ivaninitworld/l.. Dev./Docker 2023. 8. 7. [Cloud] 배포 - Docker : Dockerfile Dockerfile 은 Docker 를 사용하여 컨테이너 이미지를 빌드하는데 사용되는 파일이다. FROM ubuntu:22.04 LABEL likelion.web.backendauthor="Ivan Kim " RUN apt-get update RUN apt-get install -y nginx RUN echo "\\ndaemon off;" >> /etc/nginx/nginx.conf RUN chown -R www-data:www-data /var/lib/nginx VOLUME [ "/data", "/etc/nginx/sites-enabled", "/var/log/nginx" ] WORKDIR /etc/nginx CMD [ "nginx" ] EXPOSE 80 EXPOSE 443 FROM ubuntu:22... Dev./Docker 2023. 8. 6. [Cloud] 배포 - Shell Script : 자동실행 스크립트 가상환경에서 동작시키다보면 가끔 가상환경을 빠져나가서 다시 설정해줘야하는 경우가 생겼다. 그래서 자동 배포를 하면서 사용했던 방법으로 자동으로 환경을 조성하고 실행시켜주는 스크립트를 만들었다. 우선 지금 실행시킬 내용이 최신이 될 수있도록 pull 을 받고, 가상환경을 적용 시키는 과정으로 로직을 생각했다. #!/bin/bash APP_NAME=lion_app # git pull echo "Start to execute git pull" git pull # 가상환경 적용 (source) echo "Start activate venv" source venv/bin/activate # runserver echo "Start execute runserver command" python3 $APP_NAME/ma.. Dev./Docker 2023. 8. 2. 이전 1 다음 728x90 반응형