우리가 개발을 하다 보면, 반드시 개발 서버에서 운영서버로 이관을 해야 할 때가 온다.
예전에는 정말 이 작업이 매우 매우 까다롭고 힘든 작업이었다.
그런데, 이제는 Docker 라는 좋은 가상환경이 존재하기 때문에 이를 그냥 통채로 어찌 보면 꾸러미 산다. 뭐 이런 식으로 보자기에 똘똘 말아서 이것을 꽁꽁 매어서, 개발 서버에서 운영서버로 마치 포장 이사 하듯이 그냥 옮겨 버리면 끝이다.
우와 이런 신세계가 있다는 것을 알고, 너무나 좋았다. 이렇게 간단하다니. 그래서 오늘은 드디어 이것을 한번 실천 해 보고자 했다.
내 노트북에 있는 개발용 서버를 여태까지는 운영서버에 파이썬 깔고 FastAPI 포트 잡아주고, 등등 정말 번거로운 작업을 진행했었다.
그러나, 오늘은 개발서버에 있는 Docker 를 똘똘 말이 하여 운영서버에 Docker로 풀어 버렸다. 그랬더니, 바로 풀리는것이다. 우와 디시한번 이 간편함에 놀라왔다.
방법은 간단하였다. 일단 내 개발 서버 역할을 하는 OS가 윈도우즈 노트북이다. 그리고 운영 서버 역할을 하는 OS도 구형 윈도우즈 노트북이다. 즉, 개발과 운영이 모두 윈도우즈 노트북이다. 매우 좋은 환경이다. 만약 개발환경과 운영환경의 OS가 좀 다르다면 이것 또한 귀찮은 작업이 좀 들어가야 하나, 같은 OS를 사용하다 보니, 이 부분은 더욱 간단해졌다.
일단 순서를 얘기하자면.
1. 개발 서버에서 돌고 있는 Docker의 모든 컨테이너의 서비스들을 down 해 줘야 한다.
이유는 짐작을 하겠지만, 혹시나 이 서비스가 돌고 있다면 백업(copy)이 잘 안될 수도 있기 때문이다.
dos 창을 열고, " docker compose down" 를 쳐 주면 docker안에 서비스들이 내려가는게 보인다.
2. 이제 내가 개발하고 있는 특정 디렉토리를 통채로 zip 파일을 만들던지, 아니면 통채로 USB 등에 copy 한다.
물론 디렉토리 정보를 그대로 가져가야 한다.
3. 이제 이렇게 copy 된 파일을 운영서버의 특정 디렉토리 하에 모두 paste 한다. 즉 모두 깔아주는것이다.
4. 이제 운영서버에도 똑 같이 Docker desktop을 인스톨 해준다. 이는 굳이 필요치 않다고 하는데, 난, 그렇지 않다. 왜냐하면 서비스가 제대로 올라오는지를 시각적으로 볼 수 있어야 안심이 되기 때문이다.
5. Docker desktop을 깔아주고 실행 시키면 당연히 아무런 컨테이너가 존재 하지 않는다. 그럼 이제 이때, docker내에 우리가 copy 해 왔던 운영 서버의 디렉토리에 들어가서 docker build를 해 주면 된다. 이때는 당연히 우리의 AP를 짯던 그 드렉토리 안에서 해줘야 한다. 이때는 dos 창을 띄워서 " docker compose up -d --build" 를 쳐주면 된다. 그러면, 지가 알아서 뭔가 쭉~ 쭉~ 올라가면서 작업을 해 준다. 참 신기한 세상이다.
참고로 Docker Desktop을 설치 중 "Use WSL 2 instead of Hyper-V (recommended)" 체크박스가 나오면 반드시 체크하여 설치를 진행해야한다. 이유는 개발 서버와 동일한 WSL2 엔진 환경을 맞추기 위함이다. WSL은 Windows Subsystem for Linux 의 약자다.
그리고, Docker를 운영서버에 깔때, 아래와 같은 메세지가 나올 수 도 있다.

이때는 당황하지 말고 wsl --update를 해야 한다.
dos 창을 띄워서 말이다. "wsl --update" 이렇게 쳐 주면 된다.
이렇게 하고 나면 정말 운영서버도 똑 같이 서비스가 되기 시작한다. 브라우저를 띄우고 localhost:8400 등 해당 포트를 사용해 보면 바로 AP가 기동이 된다는 것을 알 수있다.
이제 운영환경이니까 Nginx 의 웹환경을 셋팅을 해 줘야 한다. 새로운 운영 AP가 이사를 왔으니, 이제 대문을 만들어줘야 하는것이다. 이렇게 하면 외부 어느 세상에서도 나의 운영서버에 브라우저로 접속을 할 수 있게 된다.
왜 Nginx를 사용해야하는것은 지난번 포스팅에서 언급을 한것같다. 자세한 것은 그 포스팅을 찾아 보면 알 수 있을 것이다.
이제 도메인 네임 치고 인터넷이 연결된 지구상 어디서든지 나의 노트북 운영서버에 접속이 가능하게 셋팅을 해 두었다.
남아 있는 한가지 숙제는 데이터 베이스 인데, 이 데이터베이스를 통채로 백업 받아서 옮기는 것은 그래도 간단한데....
운영서버가 실제 실 데이터가 들어오기 시작하면, 그리고 개발서버에서 추가로 테이블과 API를 개발했다면 이를 옮기는 작업이 사실 좀 어려울것 같다.
이 부분은 Alembic 이라고 이 마이그레이션을 담당하는 녀석이 존재한다는 것을 알게 되었다.
정석적인 방법 (Alembic 마이그레이션):
- 개발 서버에서 테이블을 만들고 alembic revision --autogenerate로 마이그레이션 파일(설계도)을 생성. (이미 파일들이 들어있을 것임.) 그런데 우리는 docker 환경이므로, "docker compose exec 컨테이너이름 alembic 명령어" 형태로 해야 한다.
- 업데이트된 소스 폴더(alembic 폴더 포함)를 운영 서버로 복사함.
- 운영 서버에서 docker compose up -d --build로 코드를 먼저 업데이트함.
- 운영 서버 백엔드 컨테이너 내부로 접속하거나 명령어를 내려 DB 구조를 업데이트해 줌.
-
PowerShell 이나 dos 창에서docker compose exec AP명_FastAPI명 alembic revision --autogenerate -m "update_table_schema"이 명령어를 실행하면 alembic/versions/ 폴더 안에 1a2b3c4d5e6f_update_table_schema.py 와 같이 무작위 고유 번호와 내가 적은 설명이 합쳐진 파이썬 파일(설계도)이 짠 하고 나타남.
올바른 DB 스키마 업데이트 흐름 (Best Practice)앞으로 테이블을 추가하거나 변경하실 때는 이 3단계 공식만 기억하면 됨.
1단계: 개발 서버에서 설계도 만들기 (도장 쾅!)
|
이상과 같이 오늘 또 하나 배운것을 정리해 본다. 이제 부터 운영서버에는 매우 심플하게 옮길 수 있겠다.
다른 분들도 혹 참고가 되시길 바란다.
-이상-
'AI & 스마트 테크' 카테고리의 다른 글
| 실전/실무에서 바이브 코딩을 위한 환경 셋팅의 중요성 (0) | 2026.06.20 |
|---|---|
| Docker 가상환경속에 또 가상환경은? 맞을까? (0) | 2026.06.19 |
| 2026년 AX코칭단 발대식 현장 (0) | 2026.06.13 |
| [AI 코딩 리뷰] 안티그라비티 2.0 갈아타기 찐 후기: 드디어 완벽한 '바이브 코딩'의 시대가 열렸다. (0) | 2026.06.08 |
| [Docker 파헤치기] #3 Docker에 pgAdmin 동작을 시켜 보자 (0) | 2026.05.31 |