☘ ANONI Chat - infra setup
보안과 확장성을 고려하여 Cloud 서버를 구축하고자 Vultr를 선택하였다.
그 중 Vultr를 선택한 이유는,
Vultr 인스턴스 생성후, console에서 최소사양으로 ubuntu desktop을 설지하겠다.
sudo apt-get update ( apt-get 도구 업데이트 )
sudo apt-get upgrade ( apt-get 도구 업그레이드 )
gui를 설치하기 전에 apt-get 도구를 update와 upgrade를 진행한다.
sudo apt-get install --no-install-recommends ubuntu-desktop ( 최소 설치 )
sudo apt-get install ubuntu-desktop ( 전체 설치 )
DB, jenkins 등 서버용 셋팅만을 원하면 최소 설치를 하기를 권장한다.
sudo apt-get install indicator-appmenu-tools ( hud service not connected 오류 해결 )
sudo apt-get install indicator-session ( 계정, 세션 아이콘 추가 )
sudo apt-get install indicator-datetime ( 상단 메뉴 시간 추가 )
sudo apt-get install indicator-applet-complete ( 볼륨 조절 아이콘 추가 )
hud service not connected
오류와 관련하여 indicator-appmenu-tools
패키지를 통해 해결할 수 있다.startx ( xwindow 환경 실행 )
sudo systemctl isolate graphical.target ( runlevel 5 일회성 실행 / init 실행 )
sudo systemctl enable graphical.target ( runlevel 5 영구히 실행 / 활성 )
sudo systemctl set-default graphical.target ( runlevel 5 영구히 실행 / inittab 수정 )
startx
명령어 없이 영구히 적용하기 위해 위 명령어를 입력하면 된다.
우분투의 runlevel
0 : poweroff.target
1 : rescue.target
2, 3, 4 : multi-user.target ( CLI 환경 )
5 : graphical.target ( GUI 환경 )
6 : reboot.target
# 1. 베이스 이미지 (명시적으로 22.04)
FROM ubuntu:22.04
# 2. 작성자 정보
LABEL maintainer="xotjd794613@naver.com"
# 3. 환경변수 설정 (비인터랙티브 설치)
ENV DEBIAN_FRONTEND=noninteractive
# 4. 패키지 업데이트 및 JDK 17 설치
RUN apt-get update && \
apt-get install -y openjdk-17-jdk curl && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# 5. 작업 디렉토리 설정
WORKDIR /app
# 6. 실행할 jar 파일 복사 (빌드된 .jar)
COPY ./build/libs/AnoniChat-0.0.1-SNAPSHOT.jar /app/AnoniChatApp.jar
# 7. 포트 노출 (SpringBoot default: 8080)
EXPOSE 8080
# 8. 기본 실행 명령
ENTRYPOINT ["java", "-jar", "/app/AnoniChatApp.jar"]
.jar
파일의 위치를 기준으로 docker파일을 작성해주었다.다음과 같은 디렉토리 상황에서
경로를 찾을 수 없는 오류가 발생하였다.
C:\Users\User\Desktop\AnoniChat\
├── App\
│ ├── Dockerfile
│ └── build\
│ └── libs\
│ └── AnoniChat-0.0.1-SNAPSHOT.jar
.dockerignore 파일
.gradle
build
target
*.iml
*.log
.DS_Store
.git
문제 해결 후
gradlew bootJar
docker build -t anonichat .
docker image 생성 완료.
docker build -t xotjd794613/anonichat:v0.02 .
docker tag anonichat xotjd794613/anonichat:v0.02
docker push "계정명"/anonichat-app:latest
curl -fsSL https://get.docker.com | sh
docker login
sudo docker pull [image이름]:[태그]
sudo docker run -p 8000:8080 "계정명"/anonichat:latest
.jar
로 실행Dockerfile
에 명시된 Java 버전, 종속성, 실행 방식이 모두 이미지에 포함.jar
파일을 빌드하고 → 서버에 복사하고 → 수동으로 백업 & 재실행docker build
→ docker push
→ 서버에서 docker pull && restart
docker run xotjd794613/anonichat:v0.02 docker run xotjd794613/anonichat:v0.01
→ 이전 버전으로 즉시 롤백 가능
과거 방식은 .jar
백업/복원 과정이 필요했음
Docker는 이미지 자체가 버전 단위 배포본
→ 서버는 단지 "Docker 런타임"만 제공하면 됨
→ 서버 관리와 인프라 유지 부담 최소화