반응형
목차
1. docker 설치
2. docker-compose 설치
3. docker-compose.yml 작성
1. docker 설치

우선 관리자 권한으로 실행할 일이 많으니 관리자 권한으로 전환하고 시작해 준다.
sudo su -
그 뒤 아래 명령어들을 차례로 입력해서 Docker를 설치해 준다.
1. 현재 시스템의 패키지 목록을 업데이트하여 최신 버전을 가져온다.
$ sudo apt-get update
2. HTTPS를 통한 패키지 다운로드 및 추가 저장소 관리에 필요한 도구들을 설치
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3. Docker의 공식 GPG 키를 다운로드하여 인증된 패키지를 설치할 수 있도록 시스템에 추가.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. Docker의 안정화(stable) 패키지 저장소를 현재 시스템의 패키지 소스에 추가.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. Docker 저장소를 포함한 패키지 목록을 다시 업데이트하여 Docker 패키지를 사용할 수 있도록 설정.
$ sudo apt-get update
6. Docker의 주요 구성 요소(Docker CE, CLI, containerd)를 설치.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

docker --version
이제 이 명령어로 도커가 잘 설치되었는지 확인해 준다. 나는 ec2에 docker가 기존에 설치되어 있었지만 다시 한번 설치해 줬다. (혹시 몰라서)
2. docker-compose 설치
아래 명령어들을 차례로 입력해서 docker-compose를 설치해 준다.
1. Docker Compose의 실행 파일을 GitHub의 공식 릴리스 페이지에서 다운로드하여 /usr/local/bin/docker-compose 경로에 저장.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2. 다운로드한 Docker Compose 실행 파일에 실행 권한을 부여하여 명령어로 실행 가능하도록 설정.
$ sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version
이제 위 명령어로 docker-compose가 잘 설치되어 있는지 확인해 보자. 위와 같이 버전이 정상적으로 뜬다면 성공이다.
3. docker-compose.yml 작성
version: "3.8"
services:
# Spring Boot Application
springboot-app:
build:
context: .
dockerfile: Dockerfile
container_name: springboot-app
ports:
- "8080:8080" # 로컬 8080 -> 컨테이너 8080
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://db:3306/{db명}
SPRING_DATASOURCE_USERNAME: {USERNAME}
SPRING_DATASOURCE_PASSWORD: {PASSWORD}
SPRING_REDIS_HOST: redis
SPRING_REDIS_PORT: 6379
SPRING_MONGODB_URI: mongodb://mongo:27017/chat
SPRING_MAIL_USERNAME: {USERNAME}
SPRING_MAIL_PASSWORD: {PASSWORD}
CLOUD_AWS_CREDENTIALS_ACCESS_KEY: {ACCESS_KEY}
CLOUD_AWS_CREDENTIALS_SECRET_KEY: {SECRET_KE}
CLOUD_AWS_REGION_STATIC: ap-northeast-2
CLOUD_AWS_S3_BUCKET: {S3_BUCKET}
depends_on:
- db
- redis
- mongo
# React Application
react-app:
build:
context: ./react
dockerfile: Dockerfile
container_name: react-app
ports:
- "3000:3000" # 로컬 3000 -> 컨테이너 3000
# MariaDB
db:
image: mariadb:10.6
container_name: mariadb
ports:
- "3306:3306" # 로컬 3306 -> 컨테이너 3306
environment:
MYSQL_ROOT_PASSWORD: {PASSWORD}
MYSQL_DATABASE: {DATABASE}
volumes:
- db_data:/var/lib/mysql
# Redis
redis:
image: redis:7
container_name: redis
ports:
- "6379:6379" # 로컬 6379 -> 컨테이너 6379
# MongoDB
mongo:
image: mongo:6
container_name: mongodb
ports:
- "27017:27017" # 로컬 27017 -> 컨테이너 27017
volumes:
- mongo_data:/data/db
volumes:
db_data:
mongo_data:
기본적으로 내가 사용할 docker-compose양식이다. 본인이 필요한 목록에 맞춰 추가, 수정해서 작성하면 된다. 이 부분은 인터넷에도 자료가 많고, gpt도 매우 잘 작성해 준다. 이를 이용해 주면 될 것이다.
이제 다음 글은 현재 작성해 둔 docker-compose.yml을 실행시킬 것이다. 각 프로젝트를 ec2로 가져와서 구동시킬 예정이다.
반응형
'공부메모 & 오류해결 > Infra' 카테고리의 다른 글
[Nginx] Nginx란 무엇이고 왜 사용할까? (2) | 2024.12.10 |
---|---|
[AWS] EC2 고정아이피 만들기 (탄력적 IP - EIP 설정) (0) | 2024.12.04 |
[AWS] EC2 접속하고 비밀번호 설정하기 (free-tier) (0) | 2024.12.04 |
[AWS] 프리티어 EC2 인스턴스 만들어보기 (0) | 2024.12.04 |
[Docker + Jenkins] Docker에 Jenkins 설치하고 사용하기 (1) | 2024.05.17 |
남건욱's 공부기록