본문 바로가기

Docker5

Server Application 배포-EC2 활용 1.Django APplication을 Docker Image 를  만들어서 EC2 배포1)Django Application을 생성 =>가상 환경 생성 python -m venv ./myvenv =>활성화myvenv/Scripts/activate =>필요한 패키지 설치djangodjangorestframework =>프로젝트 생성django -admin startproject apiservercd apiserver =>프로젝트 실행(제대로 설치됬는지)python manage.py runserver =>소스 코드 수정-settings.py 파일을 수정#배포를 할 때 정확한 IP를 모른다면 *로 설정ALLOWED_HOSTS = ['*']#사용할 Application 등록INSTALLED_APPS = [ .. 2024. 5. 2.
Docker(4)-DockerCompose Docker Compose 1.개요 =>시스템 구축과 관련된 명령어를 하나의 텍스트 파일(yaml)에 기재해서 한번에 시스템 전체를 실행하고 종료와 폐기까지 하도록 도와주는 도구 =>공통의 목적을 갖는 애플리케이션을 docker-compose.yml 파일에 코드로 정의해서 한번에 서비스를 올리고 관리할 수 있는 도구 =>하나의 서비스는 하나의 도구만 사용하는 경우는 드뭄 React Node, Python의 Web Frameword, Spring 데이터베이스 =>이런 경우 3개의 컨테이너를 정의해서 사용해야 하는데 이를 별개의 파일로 관리하는 것은 비효율적 여러 개로 관리하다보면 수정을 해야 하는 경우 3곳 모두 수정을 해야하는데 이런 경우 에러가 발생할 가능성이 높음 하나의 정의 파일을 이용해서 관리하는.. 2024. 4. 6.
Docker(3)-Dockerfile DockerFile 1.개요 =>DockerImage 을 생성하기 위한 스크립트 =>이미지를 사용하는 방법은 기존에 존재하는 이미지(DockerHub 나 Private Repositoty 에서 다운로드)를 이용하는 방법이 있고, 이미지를 직접 만들어서 사용하는 방법(동일한 환경을 만들어서 사용하거나 애플리케이션을 배포 =>이미지를 생성하는 방법 -현재 사용중인 컨테이너를 이미지로 생성 -스크립트를 이용(Dockerfile) =>IaC(Infrastructure as Code):인프라를 코드로 구성 -기존에는 하나의 개발팀이 개발을 하기 위해서 모여서 직접 동일한 버전의 소프트웨어를 설치해서 환경을 동일하게 생성 동일한 운영체제를 사용하거나 동일한 운영체제를 사용할 수 있는 VM을 이용 -리눅스 기반의 도.. 2024. 4. 4.
Docker(2) 1.컨테이너 와 호스트 간의 파일 복사 1)복사 명령 docker cp 소스 타겟 =>현재 컴퓨터에 있는 파일을 컨테이너에 전달 docker cp 현재컴퓨터의 파일겨로 컨테이너:컨테이너 경로 =>컨테이너에 있는 파일을 현재 컴퓨터에 전달 docker cp 컨테이너:컨테이너 경로 현재 컴퓨터의 파일 경로 2)아파치 컨테이너 와 현재 컴퓨터 사이의 파일 복사 =>Apache:웹 서버이고 이미지 이름은 httpd 이며 내부에서 열려있는 포트는 80(http의 기본 포트) 웹 서버나 데이터베이스 서버처럼 게속해서 서비스를 해야 하는 컨테이너는 -d 옵션이로 실행해야 하고 터미널로 접속해야 하는 컨테이너는 -it 옵션을 추가해서 생성 포트포워딩할때는 -p호스트 컴퓨터의포트:컨테이너의포트 =>아파치 컨테이너 실행 .. 2024. 4. 3.
Docker(1) 1.CI/CD 1)개요 =>CI/CD 의 개념은 Continuous Integration(지속적인 통합),Continous Delivery(지속적인 서비스 제공),Continuous Deployment(지속적인 배포) =>애플리케이션 개발 단계를 자동화해서 애플리케이션을 보다 짧은 주기로 고객에 전달하기 위한 방법 =>새로운 코드 통합으로 인해 개발 및 운영 팀에 발생하는 문제(Integration Hell)를 해결하는 방법 =>지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드를 작업할 경우 서로 충돌하는 문제를 해결 2)지속적인 통합 =>개발 팀이 작은 변경 사.. 2024. 4. 2.