Setup các key trên Github (Vào repo → settings/secrets/actions)
Thông tin các keys này nằm trong file trên
Mỗi lần chạy lại instance trên awc thì địa chỉ ip sẽ đổi, vì vậy trước khi deploy cần lên trên instance lấy địa chỉ ip mới rồi thay vào host.
Ở đây lưu ý vùng và Singapore, và địa chỉ ip lấy ở Public IPv4 address
Vậy là xong bước setup môi trường, bây giờ cần setup thêm môi trường cho máy chủ ec2
Kết nối với máy chủ
Mở thư mục chứa aws_ec2_keypair rồi vào git bash
Chạy:
Ở đây, **3.0.104.231** là địa chỉ ip được lấy từ instance có đề cập ở bước trên
Sau đó nó chạy dòng lệnh, rồi bấm yes, cuối cùng thấy hiện ra con đại bàng là ok
Cài docker và docker compose
Docker
sudo dnf update -y sudo dnf install -y docker sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user
Docker compose
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
Kiểm tra
docker --version docker compose version
docker-compose --version
À chỗ này nếu không được thì thêm tiền tố sudo
Nếu không được thì tự fix nha 🥴
Okay, vậy là xong 2 lần setup ở dưới github action và trên aws, bây giờ ta bắt đầu deploy
Bây giờ mình đang setup khi push code lên master ở file ci/cd thì sẽ bắt đầu luồng chạy:
git push
lên branch master.DOCKER_IMAGE=leetuan0342/my-spring-app
DOCKER_TAG=1.0
Checkout code từ repo.
Cài JDK 21 (vì project Spring Boot).
Cài Docker BuildX để build image.
Login Docker Hub (dùng secrets.DOCKERHUB_USERNAME
+ secrets.DOCKERHUB_TOKEN
).
Build + push image lên Docker Hub:
docker build -t leetuan0342/my-spring-app:1.0 .
docker push leetuan0342/my-spring-app:1.0
Copy file compose.yml
sang server EC2 (IP 3.0.104.231
) qua scp-action.
build
)
.env
chứa các biến DB (SPRING_DATASOURCE_URL
, SPRING_DATASOURCE_USERNAME
, SPRING_DATASOURCE_PASSWORD
) từ GitHub Secrets.docker compose
hay docker-compose
để chọn lệnh chạy.sudo
.customer-network
nếu chưa có.docker compose down
rồi docker compose up -d
để chạy lại container.customer-service
có chạy không. Nếu fail thì dừng job.Vào github action kiểm tra có lỗi không
Nếu không có lỗi gì thì lên lại ec2, gõ
sudo docker ps
để list ra các container đang chạy, nếu không có tức đã bị lỗi ở bước deploy
Một lỗi mà mình gặp dù đã deploy thành công nhưng không có container chạy là mình setup biến môi trường trên github action sai so với trong code,
Nếu ok thì vào kiểm tra API
http://3.0.104.231:8081/api/customers
Thay host phù hợp