서버에 접속했으니 이제 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

 

 

쉽지않다....

여러번 해봐야겠따 ...

 

 

 

 

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

+ Recent posts