Skip to content

About

thingcoding_infra docker k8s 구성 설정파일

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

thingcoding_infra

Oracle Linux 단일 서버용 운영 구성입니다.

  • thing.qook.io, thingcoding.qook.io → main:8080
  • thing-admin.qook.io → admin:10000
  • HTTP(80) → HTTPS(443) 리다이렉트
  • Let's Encrypt 인증서 발급 및 자동 갱신

서버 준비

세 저장소를 같은 디렉터리에 둡니다.

/home/opc/work/
├── thingcoding_infra/
├── thingcoding_main/
├── thingcoding_manage/
├── wallet/
└── static_resource/
    ├── compileTmp/
    ├── libraries/
    ├── thingProjectImg/
    ├── errorReportImg/
    └── profileImg/

DNS의 세 도메인 A 레코드가 서버 공인 IP를 가리키는지 확인하고 Oracle Cloud 보안 목록/NSG와 서버 방화벽에서 TCP 80, 443을 허용합니다.

최초 배포

cd /home/opc/work/thingcoding_infra
cp .env.example .env
vi .env
chmod +x scripts/*.sh
./scripts/init-ssl.sh

.env에는 실제 이메일과 DB 접속 정보를 입력해야 합니다. Oracle Wallet을 사용한다면 기본 경로는 /home/opc/work/wallet이며 WALLET_PATH로 변경할 수 있습니다.

컴파일 임시 파일과 업로드 이미지는 기본적으로 /home/opc/work/static_resource에 저장되며 STATIC_RESOURCE_PATH로 변경할 수 있습니다. 배포 전에 다음 디렉터리를 생성합니다.

mkdir -p /home/opc/work/static_resource/{compileTmp,thingProjectImg,errorReportImg,profileImg}

Arduino CLI는 서버 호스트에 설치하고 main 컨테이너에 읽기 전용으로 마운트합니다.

mkdir -p /home/opc/work/arduino-cli /home/opc/work/arduino-cli-data
curl -fsSL https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz \
    | tar -xz -C /home/opc/work/arduino-cli
chmod +x /home/opc/work/arduino-cli/arduino-cli

/home/opc/work/arduino-cli/arduino-cli \
    --config-dir /home/opc/work/arduino-cli-data config init
/home/opc/work/arduino-cli/arduino-cli \
    --config-dir /home/opc/work/arduino-cli-data \
    config set directories.data /home/opc/work/arduino-cli-data/data
/home/opc/work/arduino-cli/arduino-cli \
    --config-dir /home/opc/work/arduino-cli-data core update-index
/home/opc/work/arduino-cli/arduino-cli \
    --config-dir /home/opc/work/arduino-cli-data core install arduino:avr

ARM64 서버는 Linux_ARM64 패키지를 사용해야 합니다. 설치 후 docker compose build main && docker compose up -d main으로 반영합니다.

상세 문서:

이후 배포

Git 소스 업데이트부터 앱별 재배포까지의 전체 절차는 Git 소스 업데이트 후 재배포를 확인하세요.

두 앱 전체 배포:

cd /home/opc/work/thingcoding_infra
./scripts/deploy.sh

한 앱만 배포:

./scripts/deploy-service.sh main
./scripts/deploy-service.sh admin

컨테이너 하나만 재시작하려면 docker compose restart main 또는 docker compose restart admin을 사용합니다. 환경변수 변경 반영과 주의사항은 단일 컨테이너 재시작 가이드를 확인하세요.

상태와 로그 확인:

docker compose ps
docker compose logs -f --tail=200 main admin nginx

인증서 갱신은 certbot 컨테이너가 12시간마다 확인하고, nginx 컨테이너가 6시간마다 설정을 다시 읽습니다.

애플리케이션 빌드는 Java/Maven 설치 없이 Maven 컨테이너에서 순차 실행됩니다. 1GB RAM 서버에서 주 서비스인 main은 최대 힙 320MB/컨테이너 500MB, 사용 빈도가 낮은 admin은 최대 힙 128MB/컨테이너 256MB로 제한했습니다. 빌드 중 메모리가 부족하면 임시 swap을 추가하거나, CI에서 이미지를 빌드해 서버에서는 pull만 하는 방식을 권장합니다.

About

thingcoding_infra docker k8s 구성 설정파일

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages