일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- UpstageAILab#국비지원
- 패스트캠퍼스업스테이지부트캠프
- 패스트캠퍼스AI부트캠프
- UpstageAILab
- 오블완
- 업스테이지패스트캠퍼스
- 패스트캠퍼스업스테이지에이아이랩
- 국비지원
- 패스트캠퍼스
- 티스토리챌린지
- Today
- Total
김민주
[TIL] 241118 - EC2에서 Docker Compose하기 본문
Do - List
- 코드카타 (Java 5문제)
- delivery_project 개발 마무리
- 팀원 코드리뷰
- 배포
- 발표 준비
배포 - EC2에서 Docker Compose 하는 방법
0. docker-compose.yml 작성 및 로컬에서 실행
docker에서 배포하기 위해 docker-compose.yml을 작성합니다.
이후 로컬에서 실행해보며 배포하기 전 테스트를 진행합니다.
1. EC2 인스턴스 설정
compose.yml이 잘 작동되는지 확인했다면 이제 EC2 인스턴스를 준비하고 접속합니다.
EC2 인스턴스 생성
- AWS Management Console에서 EC2 대시보드로 이동하여 새로운 EC2 인스턴스를 생성합니다.
- AMI: Ubuntu 또는 원하는 리눅스 배포판 선택
- 인스턴스 유형: t2.micro (무료 티어 사용 시)
- 키 페어: SSH 접속을 위한 키 페어 생성
- 보안 그룹: HTTP(80), HTTPS(443), SSH(22) 포트를 열어둡니다.
EC2 접속
- EC2 인스턴스가 시작되면, 퍼블릭 IP 주소를 확인합니다.
- 터미널을 열고, SSH로 EC2 인스턴스에 접속합니다. (키 파일 경로는 실제 파일 경로로 변경)
ssh -i /path/to/your-key.pem ubuntu@your-ec2-public-ip
2. Docker 및 Docker Compose 설치
Docker 설치
1. EC2에서 Docker를 설치합니다.
sudo apt update sudo apt install -y docker.io
sudo docker --version
3. Docker를 자동 시작하도록 설정합니다.
sudo systemctl enable --now docker
Docker Compose 설치
1. Docker Compose를 설치합니다.
sudo apt install -y curl sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2. 설치된 Docker Compose의 권한을 변경합니다.
sudo chmod +x /usr/local/bin/docker-compose
3. Docker Compose가 제대로 설치되었는지 확인합니다.
docker-compose --version
3. GitHub에서 프로젝트 가져오기 (선택 사항)
프로젝트가 GitHub에 있다면, EC2 인스턴스에서 Git을 사용하여 프로젝트를 클론할 수 있습니다.
1. Git을 설치합니다.
sudo apt install -y git
2. 프로젝트를 클론합니다.
git clone https://github.com/yourusername/yourrepository.git cd yourrepository
4. Docker Compose 파일 준비
프로젝트 디렉터리 내에 docker-compose.yml 파일을 준비합니다. 로컬에서 작업한 파일을 그대로 EC2로 복사할 수도 있고, GitHub에서 클론했다면 이미 존재할 수 있습니다.
- docker-compose.yml 파일을 작성하거나 기존 파일을 확인합니다.
5. Docker Compose 실행
이제 EC2에서 docker-compose 명령어를 실행하여 로컬과 같은 환경을 EC2에서 실행합니다.
1. docker-compose.yml 파일이 있는 디렉터리로 이동합니다.
cd /path/to/your/project
1-1. '-bash: cd: C:Program FilesSpringdelivery_project: No such file or directory' error 발생의 경우
EC2 인스턴스는 Linux 운영 체제이므로 Windows 경로를 사용하려면, Windows에서 EC2 인스턴스로 파일을 전송하거나 작업해야 합니다. EC2 인스턴스에서 해당 경로를 사용하려면, EC2에 해당 프로젝트 폴더가 복사되어 있어야 합니다.
[ 해결 방법 ]
1. PowerShell을 관리자 권한으로 실행합니다.
2. scp 명령어를 사용하여 파일을 EC2로 복사합니다.
예시:
scp -i C:\path\to\your\key.pem C:\path\to\your\project\* ubuntu@<EC2_PUBLIC_IP>:/home/ubuntu/delivery_project/
- C:\path\to\your\key.pem : EC2에 연결하는 키 파일 경로.
- C:\path\to\your\project\* : 로컬 파일 경로 (프로젝트 디렉토리).
- ubuntu@<EC2_PUBLIC_IP> : EC2의 공용 IP 주소.
- /home/ubuntu/delivery_project/ : EC2의 파일 저장 경로.
이렇게 EC2로 파일을 전송한 뒤에 해당 디렉토리로 이동하려면 다음 명령어를 사용하면 됩니다.
cd /home/ubuntu/delivery_project
해당 경로는 SCP로 파일을 전송한 디렉토리입니다.
2. Docker Compose를 사용하여 서비스들을 실행합니다.-d 옵션은 백그라운드에서 실행되도록 합니다.
sudo docker-compose up -d
3. 컨테이너들이 정상적으로 실행되는지 확인합니다.
sudo docker-compose ps
6. EC2에서 외부 접근 설정
포트 개방
EC2 보안 그룹에서 HTTP(80), HTTPS(443) 포트를 개방했는지 확인합니다. 그렇지 않으면 해당 포트를 열어야 외부에서 접근할 수 있습니다.
웹 브라우저에서 확인
EC2의 퍼블릭 IP 주소를 입력하여 웹 애플리케이션이 제대로 동작하는지 확인합니다.
http://your-ec2-public-ip
7. Docker Compose 서비스 종료
서비스를 중지하려면 다음 명령어를 사용합니다:
sudo docker-compose down
8. (선택) Docker Compose 자동 실행 설정
EC2 인스턴스가 재부팅되었을 때 Docker Compose가 자동으로 실행되도록 설정하려면, systemd 서비스로 설정할 수 있습니다.
1. /etc/systemd/system/docker-compose-app.service 파일을 생성합니다.
sudo nano /etc/systemd/system/docker-compose-app.service
2. 다음 내용을 붙여넣기 합니다:
[Unit]
Description=Docker Compose for MyApp
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/path/to/your/project
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.target
3. 서비스 파일을 리로드하고, 활성화합니다:
sudo systemctl daemon-reload
sudo systemctl enable docker-compose-app
sudo systemctl start docker-compose-app
이제 EC2가 재부팅되면 Docker Compose가 자동으로 시작됩니다.
'STUDY > TIL' 카테고리의 다른 글
[TIL] 241120 (0) | 2024.11.20 |
---|---|
[TIL] 241119 - delivery project 결과물 (1) | 2024.11.19 |
[TIL] 241115 - Mockito 기반 테스트 코드 작성 (1) | 2024.11.15 |
[TIL] 241114 (0) | 2024.11.14 |
[TIL] 241113 (0) | 2024.11.14 |