# 🚀 Quản lý dự án Next.js + Socket_BE + Nginx bằng Docker Compose
Dự án này gồm 3 service tách riêng, mỗi service có `docker-compose.yml` riêng:/projects ├── nextjs/ │ └── docker-compose.nextjs.yml ├── socket_be/ │ └── docker-compose.socket_be.yml ├── nginx/ │ └── docker-compose.nginx.yml ├── manage.sh # Script quản lý cho Linux/macOS └── manage.bat # Script quản lý cho Windows CMD
---
## 🐧 Cách chạy trên Linux / Ubuntu / macOS
### 1. Cấp quyền thực thi script
```bash
chmod +x manage.sh
./manage.sh up # Chạy tất cả service
./manage.sh down # Dừng tất cả service
./manage.sh restart # Restart toàn bộ
./manage.sh logs # Xem log của nginxChạy trong thư mục /projects.
manage.bat up :: Chạy tất cả service
manage.bat down :: Dừng tất cả service
manage.bat restart :: Restart toàn bộ
manage.bat logs :: Xem log của nginxCác service đều join vào appnet. Nếu chưa tồn tại, script sẽ tự tạo:
docker network create appnet-
Chứng chỉ SSL nằm trong
nginx/certs/ -
File config
nginx.confđã được mount sẵn:ssl_certificate /etc/nginx/certs/client.crtssl_certificate_key /etc/nginx/certs/client.key
nextjschạy tạihttp://nextjs:3000trong network docker.socket_bechạy tạihttp://socket_be:3002(hoặc3003).nginxexpose ra ngoài80và443.- Khi truy cập từ trình duyệt: https://localhost/ sẽ tới Next.js.
Rõ rồi 👍. Mình sẽ viết lại file README đầy đủ, bao gồm cả phần cập nhật code (update) sau khi bạn sửa trong repo tổng hoặc repo con.
Repo tổng có cấu trúc:
.
├── nextjs/
├── nginx/
└── socket_be/
Mỗi project con có repo riêng trên GitLab:
nextjs/→http://10.32.116.233/khoind/fe_nextjs.gitnginx/→http://10.32.116.233/khoind/fe_nginx.gitsocket_be/→http://10.32.116.233/khoind/fe_socket.git
Chạy 1 lần trong repo tổng:
git remote add nextjs http://10.32.116.233/khoind/fe_nextjs.git
git remote add nginx http://10.32.116.233/khoind/fe_nginx.git
git remote add socket_be http://10.32.116.233/khoind/fe_socket.gitgit subtree push --prefix=nextjs nextjs main
git subtree push --prefix=nginx nginx main
git subtree push --prefix=socket_be socket_be mainVí dụ bạn thay đổi file trong nextjs/ ở repo tổng.
Khi commit xong, chạy:
git subtree push --prefix=nextjs nextjs mainTương tự cho nginx/ và socket_be/ nếu có thay đổi.
→ Lệnh này sẽ đồng bộ code mới từ repo tổng sang repo con trên GitLab.
Ví dụ fe_nextjs.git có commit mới.
Muốn cập nhật về repo tổng:
git subtree pull --prefix=nextjs nextjs mainTương tự với nginx và socket_be.
→ Lệnh này sẽ merge code mới từ repo con về lại thư mục con trong repo tổng.
-
Push từ repo tổng sang repo con:
git subtree push --prefix=<folder> <remote> main
-
Pull từ repo con về repo tổng:
git subtree pull --prefix=<folder> <remote> main