이 가이드는 중지되었던 AWS 인스턴스를 다시 켜는 단계부터 도커 이미지 빌드까지의 실전 명령어를 담고 있습니다.
1. 로컬 환경 준비 및 서버 접속
먼저 내 컴퓨터(Windows) 터미널에서 AWS 서버로 접속을 시도합니다.
1.1 키 페어 권한 설정 (최초 1회 필수)
윈도우에서 .pem 키의 권한이 너무 열려 있으면 접속이 거부됩니다. 파일이 있는 폴더(C:\Pyg\Memo)에서 아래 명령어를 수행합니다.
icacls "meat-a-eye-key.pem" /inheritance:r
icacls "meat-a-eye-key.pem" /grant:r "%username%":"(R)"
1.2 SSH 접속 실행
AWS 콘솔에서 인스턴스를 [시작]한 후, 할당된 고정 IP로 접속합니다.
ssh -i "meat-a-eye-key.pem" ubuntu@내_고정_IP
2. 서버 네트워크 및 도커 환경 구축
서버 접속 후, 외부 사이트 접속이 안 되는 DNS 문제를 해결하고 도커를 설치합니다.
2.1 DNS 주소 찾기 에러 해결
download.docker.org 등 특정 도메인을 찾지 못할 때 구글 DNS를 강제 지정합니다.
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
2.2 도커(Docker) 설치 (플랜 B 방식)
공식 저장소 이슈를 피해 우분투 공식 패키지로 설치를 진행했습니다.
sudo apt update
sudo apt install -y docker.io
# 도커 서비스 활성화
sudo systemctl start docker
sudo systemctl enable docker
# 사용자 권한 부여 (실행 후 exit로 나갔다 다시 접속해야 적용됨)
sudo usermod -aG docker $USER
exit
3. 프로젝트 소스 코드 및 설정 파일 준비
서버에 우리 프로젝트 코드를 가져오고 도커용 레시피를 만듭니다.
3.1 깃허브 코드 클론
git clone https://github.com/Meat-A-Eye-Ops/Meat-A-Eye-Service.git
cd Meat-A-Eye-Service
3.2 .dockerignore 파일 생성
빌드 시 제외할 목록을 작성합니다.
cat > .dockerignore <<EOF
__pycache__/
*.pyc
venv/
.git/
.env
Meat_A_Eye-frontend/
EOF
3.3 Dockerfile 생성
백엔드와 AI 모델 폴더를 모두 포함하는 빌드 레시피를 작성합니다.
cat > Dockerfile <<EOF
FROM python:3.11-slim
RUN apt-get update && apt-get install -y \\
libgl1-mesa-glx \\
libglib2.0-0 \\
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 의존성 설치 (CPU용 PyTorch 우선)
COPY Meat_A_Eye-backend/requirements.txt .
RUN pip install --no-cache-dir torch torchvision --index-url https://download.pytorch.org/whl/cpu
RUN pip install --no-cache-dir -r requirements.txt
# 소스 복사 및 경로 설정
COPY Meat_A_Eye-backend/ ./Meat_A_Eye-backend/
COPY Meat_A_Eye-aimodels/ ./Meat_A_Eye-aimodels/
ENV PYTHONPATH=/app/Meat_A_Eye-backend:/app/Meat_A_Eye-aimodels
WORKDIR /app/Meat_A_Eye-backend
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
EOF
4. 도커 이미지 빌드 실행
모든 준비가 끝났으므로 이미지를 생성합니다.
# meat-a-eye-api 라는 이름으로 빌드 (마지막 점 필수)
docker build -t meat-a-eye-api .
빌드 확인 명령어
docker images
'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-3 배포 실전 공부' 카테고리의 다른 글
| [배포] Meat-A-Eye 배포 및 트러블슈팅 진행 기록 (마지막) (0) | 2026.03.27 |
|---|---|
| [배포] 데이터베이스 연결, CORS, 외부 API 보안 연결 문제 (6) (0) | 2026.03.26 |
| [Meat-A-Eye 배포] AWS EC2 서버 구축 및 AI 환경 세팅(3) (0) | 2026.03.13 |
| [배포] AWS RDS 활용 - MySQL DB 구축 및 초기화(2) (0) | 2026.03.11 |
| [개인 공부] "배포" 기본 개념 정리(1) (0) | 2026.03.07 |
