DevOps
2023.04.30 - [DevOps] - CircleCi Yaml Configure 살펴보기 2. sample config.yml
2023.04.30 - [DevOps] - CircleCi Yaml Configure 살펴보기 1 - Jobs CircleCi Yaml Configure 살펴보기 1 - Jobs 공식 문서 튜토리얼을 공부했다. 1. Jobs # CircleCI configuration file version: 2.1 jobs: build: docker: # Primary container image where all steps run - image: cimg/base:2022.05 auth: username: mydockerhub-user password: $DOCKERHUB_PASSWORD # co barun-programing.tistory.com 어제에 이어서 공식 문서 예제를 보고 config.yml을 이해해보자..
CircleCi Yaml Configure 살펴보기 1 - Jobs
공식 문서 튜토리얼을 공부했다. 1. Jobs # CircleCI configuration file version: 2.1 jobs: build: docker: # Primary container image where all steps run - image: cimg/base:2022.05 auth: username: mydockerhub-user password: $DOCKERHUB_PASSWORD # context / project UI env-var reference jobs은 새로운 컨테이너 또는 가상 머신 내에서 하나의 단위로 실행되는 단계 모음이다. jobs은 중첩된 키 쌍을 사용하여 구성에서 설정되는 Docker 컨테이너 내에서 빌드된다. docker는 사전 빌드된 CircleCI Docke..
다중 컨테이너를 활용한 애플리케이션의 개발 환경 구축 - 1
이 포스팅은 『따라 하며 배우는도 커와 CI 환경 』을 보고 썼다. 실무에서 애플리케이션 프로젝트를 진행하려면 백엔드 서버와 데이터베이스 등 많은 요소가 필요하다. 도커를 통해 이러한 앱들을 컨테이너를 통해 활용하므로 멀티 컨테이너 애플리케이션이라 부른다. 멀티 컨테이너 애플리케이션을 위한 전체적인 설계 엔진엑스를 사용하는 용도에 따라 두 가지 설계로 나눠보자. 첫 번째 방법은 클라이언트에서 엔진엑스로 오는 요청을 백엔드 서버와 프런트엔드 서버로 나누는 구조이다. 두 번째 방법은 엔진엑스는 프런트엔드 서버로만 사용해 클라이언트에서 정적 파일을 요구할 때 이를 제공하는 형식으로만 사용하는 구조이다. 두 가지 방법의 장단점을 살펴보자. 엔진엑스의 프록시 기능을 이용한 설계 첫 번째 설계 방식은 엔진엑스를 두..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtOKEN%2Fbtr2ZBKRlBA%2FnaxYFHHRwRBqPKpiSCPOU1%2Fimg.png)
도커 컴포즈 파일 작성하기
컨테이너는 격리된 상태로 생성되고 기본적으로 외부와 통신할 수 없게 설정돼 있다. 이때 도커 컴포즈를 이용하면 손쉽게 컨테이너를 연결시킬 수 있다. Node와 MySQL DB 연결하기 version: "3.7" # 도커 컴포즈 버전 services: # 이 하단부에 컨테이너들을 정의 mysql: # 컨테이너 이름 image: mysql:5.7 # 컨테이너에서 사용하는 이미지 volumes: # 볼륨 연결 - todo-mysql-data:/var/lib/mysql environment: # 환경변수 MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: todos docs: build: context: . # Dockerfile이 있는 경로 dockerfile: Dockerfile # ..
주절주절 + Docker 이미지 효율적으로 빌드하기
최근에 나의 부족함을 많이 느끼고 있는 거 같다. 3년이란 시간 동안 노력하지 않은 죄를 받고 있는 느낌이다. 그래도 꾸준히 하면 내가 원하는 개발자에 다가가지 않을까 하는 생각이다. 언젠간 이 일을 좋아하는 만큼 실력도 따라줘서 개발을 좋아한다고 자랑스럽게 말하는 순간이 왔으면 좋겠다. 좋아한다는 건 그에 대해 궁금해하고 알려고 노력한다는 뜻이니까. 부지런히 노력하고 좋아하자. 애플리케이션의 소스 코드를 변경했을 때 이미지를 효율적으로 다시 빌드하기 패키지 파일을 효율적으로 COPY 하기 기존의 도커 파일에서는 이미지 빌드과정에서 패키지를 다시 내려받고 있다. 이러한 문제를 해결해 보자. 기존 도커파일: FROM node:10 WORKDIR /usr/src/app COPY ./ ./ RUN npm in..
Dockerfile로 nginx + django 서버 만들기
Dockerfile로 nginx + gunicorn + django 서버를 구성하여 띄웠다. 사실 생각해보면 별거 아닌데, docker에 대한 지식 부족으로 인한 환장의 콜라보로 시간을 버렸다. 괜히 docker라는 거에 겁을 먹었던 거 같다. 도커 파일 없이 그냥 패키지 설치하면서는 잘만 구성하여 띄웠는데... Gpt 가 많이 도와줬다... 고맙다... 어쨌든 다신 이런 일이 없게 기록을 남기자 Dockerfile 만들기 Dockerfile을 만들기에 앞서 생각을 해보자. 만약 Ubuntu 환경에서 nginx와 django를 띄우려면 어떻게 해야할까? 간단하다. nginx를 띄우고 wsgi로 django를 연결시키면 된다. 이걸 Dockerfile에 그대로 적용하면 된다. 1. nginx를 설치한다. ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX5ccH%2Fbtr18EObK8E%2FJ3hrOaK3eaiuZ2LeayWAxk%2Fimg.png)
따라하며 배우는 도커와 CI 환경 - 3. 직접 도커 이미지 생성하기
도커 이미지란 도커 이미지는 컨테이너를 만드는 데 필요한 설정이나 종속성을 가진 소프트웨어 패키지이다. 도커 이미지를 이용해 도커 컨테이너를 생성할 수 있다. 도커 이미지를 생성하는 순서 Dockerfile을 작성한다. Dockerfile에 입력한 명령들이 도커 클라이언트에 전달된다. 도커 클라이언트에 전달된 명령들을 도커 서버에서 처리해 도커 이미지를 만들어 준다. 도커 파일(Dockerfile) 만들기 도커 파일이란? 도커 파일은 도커 이미지를 만들기 위한 설정 파일로, 도커 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의하는 곳이다. 가상으로 A라는 프로그램을 실행할 수 있는 이미지가 있다고 가정하자. 여기서 A 이미지 안에 필요한 것은 크게 2가지이다. 하나는 A 이미지로 컨테이너를 생성했을..
따라하며 배우는 도커와 CI 환경 - 1. 도커란
이 시리즈는 책을 읽으면서 실습하는 포스팅이다. 중간중간 필요한 개념도 정리하자. 도커 이미지와 도커 컨테이너 도커 컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다. 도커 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 ㅍ포함하는 가볍고 독립적이며 실행 가능한 소프트 웨어 패키지이다. 도커를 사용할 때의 흐름 도커 클라이언트에 원하는 명령을 입력한다. 도커 서버(도커 데몬)가 도커 클라이언트에 입력한 명령어를 전달받으면 명령어에 따른 이미지를 생성하고 컨테이너를 실행한다. 그리고 해당 컨테이너에서 애플리케이션을 실행한다...
Github Actions CI/CD 알아보기 - 1
CI/CD는 지속적인 통합(Continuous Integration)과 배포(Continuous Delivery/Deployment)를 일컫는 말이다. CI/CD는 DevOps의 핵심 개념 중 하나이다. 어떤 구성이 있는지 살펴보자. 여기서는 github actions를 기준으로 설명한다. CI 자동화 프로세스인 지속적인 통합을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합된다. 여러 명의 개발자의 코드가 충돌나는 경우를 이 과정에서 해결할 수 있다. CD 지속적인 서비스 제공 또는 배포라고 볼 수 있다. 버그 테스트를 거쳐 repo에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 repo에서 애플리케이션을 실시간..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHAker%2FbtrZItCOsCR%2FiQ4zhwS8dLIInh8ilbFav1%2Fimg.png)
배포전략 - 카나리 배포전략
다양한 배포전략 중에서 카나리 배포전략을 알아보자. 카나리는 새인데 탄광에서 유독가스가 배출되는 것을 알아서 위험을 알렸다고 한다. 이런 것처럼 카나리 배포는 새롭게 배포한 버전의 위험을 감지할 수 있는 배포 전략이다. 배포를 할 때 한 번에 모든 소스를 올리는 것이 아니라 특정 서버 혹은 User에게만 배포를 한 뒤, 정상적으로 운용이 된다면 전체 서버로 확대한다. 카나리 배포의 장점은 A/B 테스트가 가능하고, 서버의 트래픽 일부를 신 버전으로 분산하여 트래픽에 따른 오류 여부를 확인도 할 수 있다. 이런 식으로 성능 모니터링에도 유용하다. 참고 https://reference-m1.tistory.com/211 [Etc] 배포 전략의 종류(롤링/블루 그린/카나리) 요즘은 MSA 아키텍처를 많이 지향하..