서버에 접속했으니 이제 Docker 를 서버에 설치하고
# 패키지 업데이트
sudo apt update
# Docker 설치
sudo apt install -y docker.io docker-compose
# Docker 권한 부여 (sudo 없이 사용)
sudo usermod -aG docker ubuntu
# 적용 (재접속 필요)
exit
순서대로 간다.
다시 접속
ssh -i ~/.ssh/healthsync-key.pem ubuntu@xxx.xxx.xxx.xxx
그리고 도커는 잘설치되었나 보자

오케이..
잘설치되었고 ...이제 프로젝트를 가져와야한다.. "Git"에서
git clone https://github.com/magui-dev/HealthSync-Public.git
프로젝트 설치된 내 깃허브 주소에서 클론한다.

그리고 폴더이동
cd HealthSync-Public
그리고여기 환경설정 이랑 여러 Oauth,openAi api, 등 키를 가져올 env 파일을 만들어야한다..
루트에 만들어놓은env 복붙할껀데... 먼저 리눅스에서 파일부터 만들자
nano .env
기존 작성해놓은 걸 복사 붙여넣기 한뒤에
Ctrl + O > Enter > Ctrl + X 순으로 저장하면된다 (맥 OS 라도 cmd 아니고 ctrl이다.)
어..근데..생각해보니 DataBase를 안넣었다.... (AI만 믿고 따라왔다가.. 깜놀했다. 근데 알아서 알려주네.)
우선 내 Mysql 버전을 먼저보고

내 PC에 docker-compose.yml에 추가했다.
안전하게 8.0 버전이면 된다고함
# MySQL
db:
image: mysql:8.0
container_name: healthsync-db
environment:
MYSQL_ROOT_PASSWORD: xxxx
MYSQL_DATABASE: healthsync
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
restart: always
#======
# 요건 depends_on 만 추가
#======
# 백엔드(Spring Boot)
backend:
build: ./backend
container_name: healthsync-backend
ports:
- "8080:8080"
env_file:
- .env
environment:
- SPRING_PROFILES_ACTIVE=prod
depends_on:
- db # ← 이거 추가!
restart: always
```
#======
# 맨밑에
#======
volumes:
mysql_data:
그리고
git status
git add .
git commit -m "DB환경 추가"
git push origin main
이순서로 깃에 올렸다.
그리고 서버에
git pull
처리했다.
그리고
서버의 .env 파일을 수정 ..
# 변경 전
DB_URL=jdbc:mysql://host.docker.internal:3306/healthsync
# 변경 후
DB_URL=jdbc:mysql://db:3306/healthsync
이게 로컬환경에선
[Mac]
├── MySQL (Homebrew) ← 여기 접근!
└── Docker
├── backend → host.docker.internal로 Mac의 MySQL 접근
└── frontend
서버에선
[EC2]
└── Docker
├── db (MySQL 컨테이너) ← 여기 접근!
├── backend → db로 MySQL 컨테이너 접근
└── frontend
위치가 달라서 수정이 필요하다고함.. ( nano .env 들어가서 수정했음)
쨋든 다시 빌드해야하니깐
docker-compose up --build -d
한 5분 걸렸다.... 멈춘줄알았다...
T3.micro <<< 젤저렴한 AWS 는 원래 느리단다...
그리고 도커 컴포즈에서 백엔드 부분에 아래내용을 추가했다. 스프링 application.yml 에서db를 못끌고와서 다시 수정했다. (빠르게넘어간다.)
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/healthsync?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=1234
헛헛헛
성공!

...된줄 알았지만 ...서버가 멈췄다....
무료서버로는 뭘 할수가없구나


경로는 저기...에서 바꾸면된다.
지금 healthsync는 중지 "중" 이라서 변경이 안되고, 이미 중지된 기존 프로젝트로 예시를 들었음. 한 5~10분걸린다.
t3.small 정도로 바꿔야겠다.
서버 상태 확인해보니 STATUS 모두 Up 이다..
docker ps

....
어마어마한 환경변수 오류로..정리 못했다... 어쨋든..
Google Cloud Console
http://healthsync-dev.duckdns.org:8080/login/oauth2/code/google
Kakao Developers
http://healthsync-dev.duckdns.org:8080/login/oauth2/code/kakao
Naver Developers
http://healthsync-dev.duckdns.org:8080/login/oauth2/code/naver
모두 리다이렉트 URI추가해서 로그인 성공..
이제 서버를 껏다 킬때마다 바뀌는 ip를 고정해야한다...
https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Addresses:
https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Addresses:
ap-northeast-2.console.aws.amazon.com
aws 에서 무료로 제공한다고함

여기서 할당 우측 주황버튼 그냥누르면 설정화면이 나온다.

서버에 올릴 인스턴스를 선택하면된다.
다음 dns 를 배정해준.. 곳으로 가서 연결되는 ip 주소만 수정하자.
https://www.duckdns.org/domains
Duck DNS
Duck DNS free dynamic DNS hosted on AWS news: login with Reddit is no more - legal request support us: become a Patreon
www.duckdns.org
수정했는데 바로 접속이 안되면... 내 브라우저 캐시문제일 테니 ..

여기서 클리어 호스트 캐시 누르고 해보자
마지막으로... https 설정만 추가하자
#도커 다운
docker-compose down
#Certbot 설치
sudo apt update
sudo apt install certbot -y
#아래주소가 내주소다 말해주기
sudo certbot certonly --standalone -d healthsync-dev.duckdns.org
#여기까지입력하면 본인 이메일 쓰고, Y 누르면된다.
부분의미
| certbot | Let's Encrypt 인증서 발급 도구 |
| certonly | 인증서만 발급 |
| --standalone | 자체 웹서버로 도메인 확인 |
| -d healthsync-dev.duckdns.org | 너의 도메인! |
할거 많다....
nano frontend/nginx.conf
server {
listen 80;
server_name healthsync-dev.duckdns.org;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name healthsync-dev.duckdns.org;
ssl_certificate /etc/letsencrypt/live/healthsync-dev.duckdns.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/healthsync-dev.duckdns.org/privkey.pem;
root /usr/share/nginx/html;
index index.html;
# 백엔드 API 프록시
location /api/ {
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# OAuth2 프록시
location /oauth2/ {
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /login/ {
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
try_files $uri $uri/ /index.html;
}
}
요걸로 저 엔진x 를 수정한다.
nano docker-compose.yml
frontend:
build: ./frontend
container_name: healthsync-frontend
ports:
- "80:80"
- "443:443"
volumes:
- /etc/letsencrypt:/etc/letsencrypt:ro
depends_on:
- backend
restart: always
요것도 프론트 부분 수정한다..
마지막으로... 재빌드 실행!
docker-compose build --no-cache frontend
docker-compose up -d
쉽지않다....
여러번 해봐야겠따 ...

띄우긴 했따....후..

'Docker & AWS > 기존 팀 프로젝트 리팩토링(HealthSync)' 카테고리의 다른 글
| 기록 3 . docker 로컬 테스트 및 aws EC2 생성 서버 접속 (1) | 2025.12.08 |
|---|---|
| 기록 2 . DNS 무료 생성 , 백엔드, 프론트에 올릴 도커 파일 생성 (0) | 2025.12.08 |
| 기록 1 . 기존 팀 프로젝트 챗봇부분의 문제점 파악 리팩토링예정 (1) | 2025.12.05 |