#!/bin/bash # 스크립트 실행 중 오류가 발생하면 즉시 중단 set -e echo "--- [1/6] 기존 컨테이너 및 systemd 서비스를 정리합니다... ---" # podman-compose로 실행된 모든 컨테이너 중지 및 삭제 sudo podman-compose down || true # systemd 서비스 중지 및 비활성화 sudo systemctl stop bigdata.service || true sudo systemctl disable bigdata.service || true # 기존 서비스 파일 삭제 sudo rm -f /etc/systemd/system/bigdata.service # systemd 리로드 sudo systemctl daemon-reload echo "--- [2/6] 컨테이너 이미지를 빌드합니다... ---" sudo podman-compose build echo "--- [3/6] systemd 서비스 생성을 위해 base-server 컨테이너를 생성합니다... ---" # 이전에 실패했던 컨테이너가 남아있을 수 있으므로 강제 삭제 후 생성 sudo podman rm -f bigdata_server || true sudo podman create \ --name bigdata_server \ --systemd=always \ --privileged \ --runtime=nvidia \ --network=host \ -e NVIDIA_VISIBLE_DEVICES=all \ -e NVIDIA_DRIVER_CAPABILITIES=all \ -e TZ=Asia/Seoul \ -e DB_HOST=localhost \ -e DB_PORT=15433 \ -e DB_USER=spacs \ -e DB_PASSWORD=scaps \ -e DB_NAME=spacs \ -v $(pwd)/ssdoctors:/home/ssdoctors:Z \ -v $(pwd)/data/workspace:/workspace:Z \ localhost/bigdata-server_base-server:latest echo "--- [4/6] base-server를 위한 systemd 서비스 파일을 생성 및 등록합니다... ---" # podman generate systemd는 create된 컨테이너 설정을 기반으로 서비스 파일을 만듭니다. sudo podman generate systemd --new --files --name bigdata_server sudo mv container-bigdata_server.service /etc/systemd/system/bigdata.service sudo systemctl daemon-reload echo "--- [5/6] postgres 컨테이너와 base-server 서비스를 시작합니다... ---" # postgres는 podman-compose로 실행 sudo podman-compose up -d postgres # base-server는 systemd로 실행 및 부팅 시 자동 시작 활성화 sudo systemctl enable --now bigdata.service echo "--- [6/6] 설치 완료! 서비스 상태를 확인합니다. ---" sleep 5 # 서비스가 시작될 시간을 잠시 기다립니다. sudo podman-compose ps sudo systemctl status --no-pager -l bigdata.service