프로젝트

인프라 초기 세팅(Docker)

class="song" 2025. 7. 23.
728x90

목표

  • 코드를 Git에 푸시하면, 자동으로 Docker로 빌드되고, Jenkins가 배포까지 해주는 시스템 구축

✅ 도커(Docker)란?

🧠 개념

  • 도커는 가상 머신보다 가볍고 빠른 가상화 도구
  • 애플리케이션을 컨테이너 안에 포장해서, 어디서든 똑같이 실행되게 해 준다.
  • 개발 -> 테스트 -> 운영 서버까지 환경을 보장

💡비유

| 앱을 실행하려면 라이브러리나 설정이 필요,  
| Docker는 앱 + 실행 환경을 통째로 포장해서 다른 컴퓨터에서도 바로 실행 가능하게 만드는 기술  

✅ 젠킨스(Jenkins)란?

🧠개념

  • jenkins는 자동화 도구(CI/CD 툴)
    • 코드를 푸시하면 -> 테스트하고 -> Docker로 빌드하고 -> 서버에 배포까지 자동으로 해준다.
    • 직접 명령어 안쳐도 되도록 자동화 스크립트(Jenkinsfile)로 관리

✅ 개발 구조

├── frontend (Flutter)
├── backend (FastAPI)
├── docker-compose.yml
└── Jenkinsfile


✅ Docker 설치

우선 EC2 접속(zsh 사용 중)

ssh -i 키파일이름.pem ubuntu@PUBLIC_IP

 

  • 갑자기 안 돼서 권한 제어를 다시 해주었다
chmod 600 키파일이름.pem

패키지 업데이트

sudo apt update && sudo apt upgrade -y

 

- 설치 전에 업데이트, 업그레이드해주자

 

설치, 공식 홈페이지 참고했다.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

- 현재 구조는 EC2 인스턴스 위에 Docker가 설치된 상태

    - Jenkins는 Docker 컨테이너로 실행 예정

설치 확인

sudo docker

 

✅ Portainer 설치

다음은 portainer를 설치했다.

portainer는 도커 모니터링하고 관리하기 위한 도구이다.

1. docker 볼륨 생성

sudo docker volume create portainer_data

 

2. docker 컨테이너로 portainer 설치

sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always

 

3. 다음으로 ec2에 ufw설정으로 9443 port를 열어 주었다

sudo ufw allow 9443/tcp

- /tcp를 붙이지 않으면 모든 프로토콜이 열리게 된다

- 실수했을 경우 삭제

sudo ufw deny port번호/tcp

- 마찬가지로 /tcp를 붙이지 않으면 모든 프로토콜을 닫는다.

 

4. port 설정 후 확인하기

sudo ufw status
# 또는
sudo ufw status numbered

 

- 설치했으면 ec2 public_ip나 도메인 + :9443/#!/home > 왜인지 모르겠는데 중간에 /#!/이라는 path가 붙었다, 수정 예정!

- 들어가 보면 docker를 GUI로 모니터링할 수 있다

728x90

'프로젝트' 카테고리의 다른 글

인프라 초기 세팅(Jenkins)  (4) 2025.07.23

댓글