배포

    AWS Docker 설치하기

    AWS에서는 기본적으로 Docker가 설치되어 있지 않다. AWS에 docker를 따로 설치해보록 하자. ubuntu 계정으로 ssh 접속 Docker 설치 ubuntu계정에 docker 설치하는 방법은 아래 document 링크에 자세히 나와있다. 순서대로 명령어 복사해서 실행하면 된다. https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu docs.docker.com 1. apt 패키지 update 및 install 2. Docker official GPG key 추가 3. stable repository 4. Docker Engine 설치 실제적으로 docker를 설치하는 명령어이다. 계속 설치하려면 y 입력 5..

    Docker Secret을 이용한 보안

    보완 관련한 정보들을 소스코드 혹은 파일에 저장하는 방식이 아닌, Docker 내에서 별도로 관리하는 Secret으로 관리하는 것을 Docker Secret 이라고 한다. [변경전] mariadb : MYSQL_ROOT_PASSWORD:[비밀번호] django: DJANGO_SECRET_KEY:[비밀번호] mysql: MYSQL_PASSWORD:[비밀번호] [변경후] secrets: DJANGO_SECRET_KEY: external: true MYSQL_PASSWORD: external: true MYSQL_ROOT_PASSWORD: external: true deploy.py def read_secret(secret_name): file = open('/run/secrets/' + secret_name..

    Docker Swarm 의 이해

    Docker Swarm docker 시스템을 포함하고 있는 가상 서버 하나를 Node라고 부른다. 여러 가지 이러한 Node 들을 하나의 서버인 것처럼 묶어주는 것을 쉽게 만들어주는 것을 Docker Swarm 라고 부른다. 여러 개의 노드를 가지고 Clustering이 가능하다. 여러 개의 node 들중 한 node 안에서 여러 개의 Service가 돌아가고 있으면, 그 service들을 다른 node에도 다른 방식으로 적용시킬 수 있다. 이러한 과정을 Container Orchestration 이라고 부르고, Docker Swarm 은 오케스트레이션 툴 중 하나이다. 오케스트레이션 툴에는 Docker Swarm , 구글에서 만든 Kubernetes, Apache mesos 등이 있고, Docker S..

    Docker Container 의 한계, Docker Stack의 이해

    Docker Container 의 한계 1. 배포시 반복적인 설정 2. Container의 shutdown 반복적인 설정의 단점을 보완하기 위해 Docker STACK 을 사용하여 컨테이너들을 한꺼번에 설정할 수 있다. 만약 Container 가 다운되면 다시 재부팅시켜야 하는데, 이를 who ? 누가 관리하냐는 문제가 생기게 된다. 이러한 점을 보완하기 위해 service라는 것으로 관리한다. Service 는 자동으로 알아서 컨테이너를 재부팅 시켜주는 기능이 있다. 또한 여러 컨테이너들을 같은 컨테이너를 여러 개 생성할 수도 있다.

    Docker Volume

    이전 포스팅에 이어서 django에 있는 static 파일들을 nginx로 동기화하는 방법을 포스팅하도록 하겠습니다. https://meongj-devlog.tistory.com/150 [Docker] django 의 Collectstatic 명령어로 Nginx 컨테이너와 동기화 할 static 파일 취합하기 Collectstatic 명령어 python manage.py collectstatic 프로젝트에 있던 static 파일들이 staticfiles 라는 폴더가 생성된 곳에 복사됨 settings.py STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STAT.. meongj-devlog.tistory.com Docker Volume Named Volume ..

    [Docker] django 의 Collectstatic 명령어로 Nginx 컨테이너와 동기화 할 static 파일 취합하기

    Collectstatic 명령어 python manage.py collectstatic 프로젝트에 있던 static 파일들이 staticfiles 라는 폴더가 생성된 곳에 복사됨 settings.py STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 생성된 staticfiles 경로에 있는 모든 static 파일들을 저장시키는 설정 Dockerfile RUN python manage.py collectstatic 도커 파일에 위에 한 줄 추가 Docker Container 에서 image 생성 Dockerfile upload해서 이미지 만들기 다음은 nginx와 연결시키는 과정을 이어서 포스팅하도록 하겠습니다,,

    [Docker]배포시 static 파일 지원하지 못하는 이유

    Static 정적 파일 Why? 왜? gunicorn / django 는 static 파일을 지원하지 못할까 html 과 같은 static 파일이 많아 지면서, 관리가 어려워지고 동적(Dynamic) 파일이 나오게 되었다. 처음에 동적 파일은 request을 보내 서버가 생성해서 client로 보내주게 됬는데, 나중엔 서버와 Application을 따로 분리하여 client 가 직접 서버로 static파일 request를 보내 response를 받는다. 하지만 동적파일은 server로 request를 보내고 application로 보내서 dynamic response를 받아서 다시 client로 보내주게 된다. 그래서 nginx와 같은 server는 정적(static)파일을 지원해주고, django는 동..

    Docker Network의 이해 및 구현

    Docker Network 란? 원래는 container끼리 분리된 환경으로 실행되기 때문에 다른 컨테이너와의 연결 할 수 없다. 하지만 이러한 여러 개의 Docker Container를 하나로 묶어주는 네트워크로 쓰일 수 있으며, Container 이름을 기반으로 서로 네트워크 안에서 주고 받을 수 있다. 즉, 같은 컨테이너 안에서는 이름으로 호출하여 서로 통신이 가능하게 만들어 준다. Create Network portainer.io 에서 nginx와 django 를 연결시켜주는 네트워크 생성한다. User > nginx port > django 순으로 연결 nginx container 설정 Gunicorn nginx 기본 설정 (nginx.conf) work_processes auto; events..