docker란 무엇인가?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.
AWS에서 Docker를 실행하면 개발자와 관리자가 어떠한 규모에서든 매우 안정적이며 저렴한 방식으로 애플리케이션을 구축, 제공 및 실행할 수 있습니다.
homebrew를 사용하면 편리한점
터미널에서 다음 코드를 cmd + v 해준다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Next step : 아래 부분에 있는 코드를 cmd + v 해준다.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/사용자/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
이 과정을 거치면 homebrew 설치 완료(설치 되었는지 확인하려면 brew --version 을 입력해 버전 확인)
cask 패키지 설치
cask를 설치하는 이유? 우리가 일반적으로 사용하는 gui환경의 맥 OS 어플리케이션(구글, 아톰 등)의 설치와 관리를 위함이다.(homebrew의 확장)
brew install cask
homebrew의 설치를 마쳤으면 이를 기반으로 이제 docker를 설치해야 한다.
homebrew를 이용한 docker 설치
brew install --cask docker
--cask 옵션을 설정해주면 mac에 docker를 설치하게 되고, docker-compose 및 docker-machine도 함께 설치해준다.
1. AWS EC2 인스턴스(ubuntu 22.04 LTS, 프리 티어(무료) 생성 후, 터미널에서 대여한 클라우드 서버로 들어간다.
/Users/kimseungbeom/Desktop/aws-key/daily1313-aws-key.pem ubuntu@퍼블릭 IP주소
2. 클라우드 서버 시간을 한국 시간으로 변경해준다.
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
3. app 디렉토리 생성 mkdir app
4. 배포에 필요한 목록들을 명령어를 사용해 다운
# apt-get 업데이트
sudo apt-get update
# Git 설치
sudo apt-get install git
sudo apt install git
# Java 11설치 (본 프로젝트는 Java11 버전입니다.)
sudo apt-get install openjdk-11-jdk
# 도커 사용에 필요한 툴 설치
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 도커 공식 GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 도커 레포지토리 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) 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-compose-plugin
# 도커 권한 설정
sudo usermod -aG docker $USER
# Docker compose 설치
sudo curl -L https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
더불어, 우리가 사용하고 있는 AWS EC2 서버의 램이 1기가 밖에 되지 않아, HDD의 일정공간을 RAM처럼 사용할 수 있도록 SWAP 메모리 지정
1기가 -> 2기가 까지 확장시킬 수 있게 된다.
# Swap 메모리 할당
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
# Swap file 읽기 및 쓰기 권한 업데이트
sudo chmod 600 /swapfile
# Swap 영역 설정
sudo mkswap /swapfile
# Swap 공간에 Swap file을 추가하여 Swap file을 즉시 사용할 수 있게 변경
sudo swapon /swapfile
-----------------------------------------------------------------------
## Swap 파일 활성화 하기 /etc/ 디렉토리 이동 후 fstab 파일 편집
# 1-1. etc 디렉토리 이동
cd ~/../../etc
# 1-2. fstab 파일 수정하기
sudo vi fstab
# 1-3. fstab 파일 맨 아래 줄에 다음과 같은 코드 추가
/swapfile swap swap defaults 0 0
## 만약 코드 변경이 안 된다면 fstab 파일에 권한을 부여해주시면 됩니다.
5. /~app 디렉토리에서 git clone
6. cd 프로젝트 name
7. chmod 권한을 줘서 실행 권한 부여 및 빌드
# gradlew 실행 권한 주기
sudo chomd 777 ./gradlew
# 빌드
./gradlew build
주의사항
local에서 mysql 접속을 끊어줘야 한다(충돌 방지)
cd /app/프로젝트명/build/libs로 이동 후 명령어를 통해 도커로 서버와 데이터베이스를 띄운다.
# 도커로 서버 + 데이터베이스 띄우기
docker compose up --build -d
# 도커로 하나만 띄우기
docker compose up --build -d {containerName}
# 컨테이너 중지 시키기 (서버 및 데이터베이스 중지)
docker compose down
# 하나만 중지 시키기
docker compose stop {containerName}
# 스프링 서버 로그 보기
docker compose logs backend
<주의사항>
libs에 담겨있는 Dockerfile, docker-compose.yml 파일들을 vi 에디터에서 직접 만들어줘야 한다.(github 푸쉬 및 커밋이 되지 않기 때문이다)
<참고 자료>
https://blog.naver.com/sosow0212/222883930459
'DevOps > Docker' 카테고리의 다른 글
[Docker] Dockerfile을 이용해 SpringApplication 빌드 및 실행 (0) | 2023.09.14 |
---|---|
[Docker] Docker-Compose를 사용하여 Springboot와 ELK stack 연동 (0) | 2023.09.04 |
[Docker] Docker-Compose를 사용하여 Springboot, Mysql 연동 (0) | 2023.08.31 |
[Docker] Docker, Docker-Compose, Dockerfile (0) | 2023.08.31 |
[Docker] Container vs VM (0) | 2023.08.31 |