์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- AWS Certified Solutions Architect - Associate
- docker-compose kafka
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- aws saa ํฉ๊ฒฉ
- aws ์ฟ ํฐ
- JPA
- ๋ค์ค ์ปจํ ์ด๋
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- redis ํ ์คํธ์ฝ๋
- private subnet ec2 ๋ก์ปฌ ์ ์
- prod docker-compose
- Codedeploy ์ค๋ฅ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- redis ์กฐํ
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- Entity
- docker compose
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- ์คํํ๋ ๋ฏธ์ค
- ์๋ฐ
- @RestControllerAdvice
- s3 log ์ ์ฅ
- Kafka
- docker ps -a
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- nGrinder
- docker
- ํ์ดํผ๋ฐ์ด์
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[Docker] EC2์ Docker Compose ์ค์นํ ๋ฐฐํฌํ๊ธฐ(feat. ์ค๋ฅ ์ง์ฅ & ํ๊ณ ) ๋ณธ๋ฌธ
[Docker] EC2์ Docker Compose ์ค์นํ ๋ฐฐํฌํ๊ธฐ(feat. ์ค๋ฅ ์ง์ฅ & ํ๊ณ )
๐คRyusun๐ค 2024. 3. 16. 08:30์ด์ ๊น์ง ์ค์ ํ Docker Compose ํ์ผ์ EC2์ ๋ฐฐํฌ๋ฅผ ํด๋ณด์.
Docker Compose๋ฅผ ๋ฐฐํฌํ EC2 ๋ฅผ ์์ฑํํ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ค. ssh ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐํ๊ธฐ ์ํด์๋ ๋ค์ด๋ฐ์ pem ๊ฒฝ๋ก์์ ํฐ๋ฏธ๋ ์คํํ ssh -i "ํค.pem" ~ ์ด ๋ช ๋ น์ด๋ฅผ ๋ณต๋ถํ๋ฉด ๋๋ค.
ํ๋ฉด์ ๋ณด์ด๋ EC2 ์ธ์คํด์ค ์ฐ๊ฒฐ๋ก ํด๋ ์ ์์ด ๊ฐ๋ฅํ๋ค.
ํฐ๋ฏธ๋์์ ๋ค์ด๋ฐ์ pemํค ๊ฒฝ๋ก๋ก ๊ฐ์ ssh๋ก ์ ์ํ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ๋ถ์ฌ๋ฃ์.
ํ์๋ ๋ช ๋ น์ด๋ฅผ ๋ฃ์๋๋ฐ
Permissions 0644 for 'ryusun-creditmarket.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "ryusun-creditmarket.pem": bad permissions ubuntu@ec2-3-39-177-21.ap-northeast-2.compute.amazonaws.com: Permission denied (publickey).
ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
SSH ํค์ ํ์ผ ๊ถํ์ด ๋๋ฌด ๊ฐ๋ฐฉ์ ์ผ๋ก ์ค์ ๋์ด ์์ด ๋ฐ์ํ๋๊ฑด๋ฐ
$ chmod 600 ํค์ด๋ฆ.pem
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํด๊ฒฐ๋๋ค.
Docker Compose ์ค์น ๋ฐ ๋ฐฐํฌ
EC2์ ์ ์ํ์ฌ ๋์ปค ๋ฐ Git์ ์ค์นํด ๋ณด์.
1. Git ์ค์น
#Perform a quick update on your instance:
$ sudo yum update -y
#Install git in your EC2 instance
$ sudo yum install git -y
#Check git version
$ git version
2. ๋์ปค, ๋์ปค ์ปดํฌ์ฆ ์ค์น ๋ฐ ์์
docker client์ server(docker daemon)๊ฐ ํต์ ๋ฐฉ์์ ๊ธฐ๋ณธ์ ์ผ๋ก unix domain socket(IPC socket)์ ์ฌ์ฉํ๋ฉฐ, ๋ด๋ถ์ ์ผ๋ก /var/run/docker.sockํ์ผ์ ์ฌ์ฉํ์ฌ ํต์ ํ๋ค.
๋ฐ๋ผ์, ์๋์ ๊ฐ์ด ์ค์น ํ ๊ถํ์ ๋ถ์ฌํ๋ค.
//๋์ปค ์ค์น
$ sudo yum install docker
$ docker -v
// ๋์ปค ์ปดํฌ์ฆ ์ค์น
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
// ๋์ปค ์์ํ๊ธฐ
$ sudo systemctl start docker
// ์คํ ๊ถํ ์ ์ฉ
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo chmod 666 /var/run/docker.sock
$ docker-compose -v
3. Docker Compose ํ์ผ์ด ์กด์ฌํ๋ ์์ค ๋ด๋ ค๋ฐ๊ธฐ
$ git clone ๊น์ฃผ์
4. Docker ํ๊ฒฝ๋ณ์
๋ก์ปฌ์์ ๊ฐ๋ฐํ ๋, DB ๊ณ์ ์ ๋ณด๋ ์ธ๋ถ์ ๋ ธ์ถ๋๋ฉด ์๋๋ ๊ฐ๋ค์ ๋ฐ๋ก ์ ์ธํ์ฌ ๊ด๋ฆฌํ์๊ณ ์ด๋ฅผ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด๋ .ENV ํ์ผ์ ์ฌ์ฉํ ์ ์๋ค.
docker-compose๋ฅผ ์ฌ์ฉํ ๋ .env๋ผ๋ ํ์ผ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฅผ ๋์ผํ๊ฒ EC2์์๋ docker-composeํ์ผ์ด ์๋ ์์น์ ์๋์ ๊ฐ์ด ํ๊ฒฝ๋ณ์ ๊ฐ๋ค์ ์ถ๊ฐํด ์ฃผ์ด์ docker-compose ์คํ์ ํด๋น ๊ฐ๋ค์ ์ฐธ์กฐํ์ฌ ์ปจํ ์ด๋๋ฅผ ์คํ์ํฌ ์ ์๊ฒ ํด์ค๋ค.
$ vi .env
DB_USERNAME=์ ์ ๋ค์
DB_PASSWORD=๋น๋ฐ๋ฒํธ
SPRING_PROFILES_ACTIVE= prod
.env ํ์ผ์ ์์ฑํ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ๊ฐ์ ํ์ธ ๊ฐ๋ฅํ๋ค.
$ docker-compose config
๋ช ๋ น์ด๋ฅผ ์น๋ฉด .envํ์ผ์ ์ค์ ํ ํ๊ฒฝ๋ณ์์ ์ ๋งตํ๋๊ฒ์ ํ์ธํ ์๊ฐ ์๋ค.
5. JDK ์ค์น ๋ฐ jar ํ์ผ ์์ฑ
์๋์ ๊ฐ์ด Amazon์์ ์ ๊ณตํ๋ OpenJDK์ธ Amazon Coretto๋ฅผ ๋ค์ด๋ฐ์ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค.
ํ๋ก์ ํธ ๋ฒ์ ์ ๋ง๊ฒ jdk๋ฅผ ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค.
# aws coreetto ๋ค์ด๋ก๋
$ sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.rpm -o jdk17.rpm
# jdk17 ์ค์น
$ sudo yum localinstall jdk17.rpm
// ํ
์คํธ ์ผ์ด์ค ์ ์ธํ๊ณ , jar ํ์ผ ๋น๋๋ง ์งํ
$ ./gradlew clean build -x test
build๋ฅผ ํ์ผ๋ฉด jarํ์ผ์ด ์์ฑ๋์๋์ง๋ฅผ ํ์ธํด๋ณด์.
6. Docker ์ด๋ฏธ์ง ๋ฐ๊ณ Docker Compose ์คํ
$ docker-compose up --build
docker-compose๋ฅผ ์ด์ฉํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ํจ๋ค.
๋ฐฐํฌ ์ฑ๊ณต!!!!!!ใ ใ
๋!!
<ํ๊ณ >
MySQLํฌํธ ๋๋ฌธ์ ๋ฉฐ์น ๋ด๋ด ๊ณ ์๊ณ ์ํ๋ค...ใ ใ ํใ ใ ใ ใ
docker Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
์ฒ์์ ๋์ปค ์ปจํ ์ด๋ ์์ฑํ ๋ MySQL 3306์ด ์ด๋ฏธ ์ฐ๊ฒฐ๋์๋ค๊ณ ํด์ sudo kill -9 PID๋ฅผ ํ๋ค. ๊ทผ๋ฐ 3306 ํฌํธ๊ฐ ์ข๋น์ฒ๋ผ ์ด์๋์ ๊ฒฐ๊ตญ์๋ ํฌํธ๋ฅผ 3308๋ก ๋ณ๊ฒฝํ๊ณ ์ปจํ ์ด๋์๋ 3308 : 3308๋ก ์ฐ๊ฒฐํ๋ค. ๊ทธ๋๊น์ง๋ง ํด๋ ๋ก์ปฌ์์ docker-compose.yml ๋ฅผ ๋น๋ํ๋ฉด ์ปจํ ์ด๋ 3๊ฐ ๋ค ์คํ๋ ์๋๊ณ , MySQL ์ปจํ ์ด๋๋ MySQL workbench ์ฐ๊ฒฐ๋ ์๋์๋๋ฐ...
EC2์ docker-compose ํ์ผ ๋น๋ํ๋๊น MySQL ์ฐ๊ฒฐ ์ค๋ฅ ์ง์ฅ์ ๋น ์ก๋ค...
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
EC2์์ ๊ฐํ์ ์ด ์ค๋ฅ๋ง ๋ฉฐ์น ๋ด๋ด ๋ดค๋ค..๊ณ์ ๋๊ฐ์ ์ค๋ฅ ๋ฐ๋ณตใ ใ ใ
๋ณด์๊ทธ๋ฃน 3308 ํฌํธ๋ ์ด๋ ค์๊ณ , yml ํ์ผ ์๋ชป์ ์๊ฑฐ ์๋ ์ฌ๋ฌ๋ฒ ๋ดฃ๋๋ฐ๋ ์ด์์ด ์๊ณ ใ ใ
์ปจํ ์ด๋ MySQL my.cnf ํ์ผ์ port=3308๋ ์ถ๊ฐํด๋ณด๊ณ , .. ์ ๋ง ๋ค์ํ ๋ฐฉ๋ฒ์ ์๋ํ๋คใ ใ
๋ฉฐ์น ๋ด๋ด ์ํฐ๋ ์ค ์์ฒญ ๋ฐ๋ค๊ฐ ๊ฒฐ๊ตญ MySQL ์ปจํ ์ด๋ ํฌํธ๋ฅผ 3307 : 3306์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ์ ํด๊ฒฐ!!ใ ใ ใ ๋ฉ์ฒญํด์ ์ค๋๊ฑธ๋ ท๋ค...ใ ใ
ํญ์ ํฌํธ ๋ณ๊ฒฝํ ๋๋ ์กฐ์ฌ, ์ฃผ์ํ์!!
๊ฒฐ๋ก
๋์ปค ์ปดํฌ์ฆ MySQL 3306 ํฌํธ ์ฐ๊ฒฐ ๋ฌธ์ ๋ "์์์ ํฌํธ : 3306"์ผ๋ก ํด์ผํ๋ค!!!