분류 전체보기

    [배포해보기 (13)] Stack을 위한 yml파일 작성

    portainer에서는 swarm init이 안돼서 ssh로 서버접속해서 docker swarm init 명령으로 시작해준다. docker-compose.yml 작성 version: "3.7" services: nginx: image: nginx:1.19.5 networks: - network volumes: - /home/django_course/nginx.conf:/etc/nginx/nginx.conf - static-volume:/data/static - media-volume:/data/media ports: - 80:80 django_container_gunicorn: image: oconnect_image:5 networks: - network volumes: - static-volume:/h..

    [배포해보기 (12)] Docker Stack, Docker Swarm 의 이해

    Docker Stack의 이해 현재까지 nginx와 django container, DB container를 만들어 배포했다. 이렇게 container만을 가지고 배포했을때 몇가지 문제가 발생한다. 1. 설정을 반복해줘야한다는것 (컨테이너를 배포할때마다) : 컨테이너마다 포트 세팅, 볼륨 세팅, 네트워크세팅 등등 => Docker Stack : 통합 세팅파일을 만들어 컨테이너들을 한번에 배포 2. 컨테이너가 모종의 이유로 꺼졌을 때 : 장고컨테이너가 갑자기 꺼졌다. 누가 켜줄건가? 사람이 계속 붙어서 관리할 수는 없다. => service: 컨테이너에 문제가 생기면 설정파일을 불러와 자동으로 리부트시킨다. 또한 scale out 이 가능하다. Total Stack Settings는 YML File에 작성..

    [배포해보기 (11)] MariaDB container를 이용한 DB분리

    현재로써는 django container안에 db 파일이 있어서 그 안에 데이터를 보관하고 있다. 그런데 만약에 이 컨테이너가 꺼지게된다? 이 데이터는 모두 사라질 것이다. 이 데이터를 컨테이너를 따로 분리할 필요가 있다. 데이터가 증발하는 걸 막기위해 volume을 이용할 것이다. 컨테이너의 생애주기와 상관없이 데이터가 유지될 수 있도록 한다. 1. 개발환경(Local)과 배포환경(Deploy)의 분리 현재 로컬환경에 settings.py 하나만 있다. settings 디렉토리를 만들어 안에 deploy.py, local.py를 만들어주고 settings.py는 base.py로 rename해 안에 넣었다. base.py from pathlib import Path import os, environ # ..

    [배포해보기 (10)] collectstatic; static file 받지 못하는 문제의 해결

    settings.py STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_DIRS = [ BASE_DIR / "static", ] collectstatic python manage.py collectstatic 로컬에서 collectstatic 해도 달라질건 없기때문에 로컬은 놔두고 dockerfile에 입력해준다. FROM python:3.9.0 WORKDIR /home/ RUN git clone https://github.com/Aiden-Kwak/oconnect2021_ver4.git WORKDIR /home/oconnect2021_ver4/ RUN pip install -r requiremen..

    [배포해보기 (9)] Static 의 이해

    nginx를 앞단에 두고 뒤에 있는 django를 구동시키는 것까지 했지만 정적인 파일들을 로딩하지 못하고있다. 왜 gunicorn / django 가 static files를 받지 못하는가? static이란 무엇인가? 초기에 서버들은 단순한 html 파일들, 정적인 파일들만 제공하는 역할을 했다. 클라이언트가 index.html을 요청하면 서버가 해당 html을 제공하는 정도의 역할만을 수행하였다. (모두 static한 서버였다.) 하지만 static만으로 처리하는 것은 한계가 존재한다. 이에 동적(dynamic)으로 컨텐츠를 생산해낼 수 있는 방향으로 변화한다. 예전에는 서버가 static과 dynamic content를 모두 처리했다. 하지만 시간이 지나며 dynamic content가 복잡해지다보..

    [배포해보기 (8)] Docker Network의 이해 및 구현

    gunicorn이 설치된 Django container와 Nginx container를 연결할 것이다. Nginx container에서 django container로 요청을 보낼때는 어떻게 보내야하는가? IP Address 로 요청을 보내야할지, DOMAIN으로 요청을 보내야할지 모른다. 이걸 해결해줄 도구가 Docker Network이다. Docker Network django container의 container name은 'django_container_gunicorn' Nginx의 container name은 'nginx' 였다. Network안에서는 container name자체가 도메인이된다. 이런식으로 두 컨테이너의 연결을 만들것이다. 1. Network 생성 우선 이전에 임시로 만들었던 ..

    [배포해보기 (7)] Gunicorn

    https://duckracoon.tistory.com/entry/%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0-6-Django-container-%EC%83%9D%EC%84%B1 [배포해보기 (6)] Django container 생성 django container 를 만들기 위한 과정 1. Upload Source to Github 2. Write Dockerfile 3. Build Image 4. Run Container 1. Upload Source to Github 올리기전 requirements.txt 만들어주기 pip freeze > req.. duckracoon.tistory.com 앞서 장고 컨테이너를 생성하면서 도커파일에 CMD ["python", "..

    [배포해보기 (6)] Django container 생성

    django container 를 만들기 위한 과정 1. Upload Source to Github 2. Write Dockerfile 3. Build Image 4. Run Container 1. Upload Source to Github 올리기전 requirements.txt 만들어주기 pip freeze > requirements.txt 가상환경을 만들고 안에 관련 패키지들을 넣었었다. 새로 만들 장고 컨테이너 안에서 이들을 다시 깔아주어야하는데 이 정보를 남겨주기 위해 명령을 실행한다. 2. Write Dockerfile Dockerfile = How to make an image? 몇가지 주요 COMMAND FROM Base Image를 뭘쓸지 골라준다 RUN command를 실행 (pip in..

    [배포해보기 (4)] Port의 이해, Nginx 컨테이너 생성

    1. 포트 Port는 "논리적 접속장소"이며 인터넷 프로토콜인 TCP/IP를 사용할 때는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 네트워크 상에서 통신을 할때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다. 그런데 대부분의 경우 하나의 컴퓨터에는 여러개의 서버가 실행될 수 있다. 컴퓨터의 여러개의 서버가 실행되고 있다면, 어느 서버에 접속해야하는지 컴퓨터에 알려줄 수 있어야하며 이때 사용되는 것이 포트 번호이다. 어떠한 데이터가 송수신을 할 때 Datalink 계층에서는 호스트의 NIC로 MAC Address를 판별하고 Network 계층에서는 IP Address로 목적지를 판별한다. 이렇게 MAC Address와 IP Address를 통해 목적지 호스트에..

    [배포해보기 (3)] Portainer로 Docker Container를 GUI로 생성하기

    portainer는 docker를 GUI로 바꿔주는 소프트웨어이다. https://hub.docker.com/ Docker Hub We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy hub.docker.com 도커허브에 접속해 portainer를 검색 > portainer-ce를 사용 (community ..