아니었다.

지난 글에서 내 컴퓨터에서만 돌아가던 프로젝트를 다른 사람도 사용할 수 있게 해보려고 했다.
그러려면 결국 배포를 해야 했다.
처음에는 단순하게 생각했다.
서버 하나 정하고,
내 프로젝트 올리고,
실행하면 되는 거 아닌가?
회사에서 개발할 때도 배포라는 말을 수도 없이 들었고, 서버에 소스가 올라가서 서비스가 돌아간다는 것도 알고 있었다.
그런데 내가 처음부터 만든 프로젝트를 직접 배포하려고 하니까 그 사이에 있는 것들이 하나씩 보이기 시작했다.
그리고 생각보다 많았다.
Docker라는 이름은 알고 있었다
배포 방법을 알아보다가 다시 Docker를 만났다.
Docker.
개발하면서 정말 많이 들어본 이름이다.
대충 어떤 건지도 알고 있었다.
실행에 필요한 환경까지 묶어서
어디서 실행하든 비슷한 환경을 만들 수 있게 해주는 것.
이 정도로 이해하고 있었다.
틀린 말은 아니었다.
문제는 내가 직접 써본 적이 거의 없었다는 것이었다.
JDK 버전이 다를 수도 있고,
운영체제가 다를 수도 있고,
내 컴퓨터에서는 당연히 있던 설정이 서버에는 없을 수도 있다.
그동안은 그냥
"내 컴퓨터에서는 되는데?"
라고 말할 수 있었다.
배포하려고 하니까 그 말이 아무 의미가 없어졌다.
내 컴퓨터에서 잘 실행되는 게 중요한 게 아니라, 내 컴퓨터가 아닌 곳에서도 실행돼야 했다.
그제야 Docker가 왜 필요한지 조금 다르게 보였다.
그런데 갑자기 Linux가 나왔다
Docker를 준비하고 배포를 진행하다 보니 이번에는 Linux가 나왔다.
나는 Windows에서 개발하고 있다.
IntelliJ를 켜고, PowerShell을 열고, Spring Boot를 실행하는 환경이 익숙하다.
그런데 배포 환경으로 넘어가니 내가 평소 사용하던 Windows 기준으로만 생각할 수가 없었다.
결국 WSL을 통해 Ubuntu까지 들어갔다.
솔직히 여기서 잠깐 이런 생각이 들었다.
나는 분명 Spring Boot 프로젝트를 배포하려고 했는데 왜 갑자기 Linux 터미널을 보고 있지?
그래도 하나씩 해봤다.
Ubuntu에서 프로젝트 폴더로 이동하고,
cd /mnt/d/dev/project/wanted-ai-champ
Git 상태도 확인했다.
git status
그런데 또 문제가 생겼다.
갑자기 파일이 전부 수정됐다고 나왔다
git status를 확인했는데 순간 당황했다.
내가 건드린 기억이 없는 파일들까지 수정됐다고 나오기 시작했다.
Java 파일부터 Gradle 설정, 문서까지 수정된 파일이 한가득이었다.
배포하려다가 프로젝트를 망가뜨린 건가 싶었다.
그런데 실제 코드가 전부 바뀐 건 아니었다.
Windows와 Linux를 오가면서 줄바꿈 방식이 다르게 인식된 문제였다.
Windows에서는 보통 CRLF를 사용하고 Linux에서는 LF를 사용한다.
평소에는 별생각 없이 쓰던 차이인데 Git에서는 파일 전체가 바뀐 것처럼 보일 수 있었다.
그래서 실제 변경 내용을 다시 확인했다.
git diff --ignore-space-at-eol --stat
결과는 생각보다 단순했다.
.dockerignore | 7 +++++++
railway.toml | 6 ++++++
2 files changed, 13 insertions(+)
수십 개 파일을 건드린 게 아니었다.
실제로 추가한 건 배포를 위해 만든 파일 정도였다.
그제야 조금 안심했다.
그리고 동시에 이런 생각도 들었다.
개발 환경이 바뀐다는 게 생각보다 많은 걸 바꾸는구나.
.dockerignore도 처음에는 별거 아닌 줄 알았다
Docker를 사용하면서 .dockerignore라는 파일도 만들었다.
이름만 보면 .gitignore랑 비슷하다.
Docker 이미지를 만들 때 굳이 포함하지 않아도 되는 파일들을 제외하는 역할을 한다.
처음에는 이런 파일이 왜 필요한가 싶었다.
그냥 프로젝트 전체를 넣으면 되는 거 아닌가?
그런데 생각해보면 로컬에서 생성된 빌드 결과물이나 IDE 설정 같은 것까지 전부 Docker 빌드에 들어갈 이유가 없다.
.gitignore가 Git에게
이건 굳이 관리하지 마.
라고 알려준다면,
.dockerignore는 Docker에게
이건 이미지 만들 때 가져가지 마.
라고 알려주는 셈이었다.
하나씩 직접 써보니까 예전에 이름만 알고 넘어갔던 것들이 조금씩 연결되기 시작했다.
Docker를 배운 게 아니라, 왜 쓰는지를 알게 됐다
사실 아직 Docker를 잘 안다고 말할 수준은 아니다.
명령어를 자유롭게 쓰는 것도 아니고, Dockerfile을 능숙하게 설계할 수도 없다.
그런데 예전과 달라진 건 하나 있다.
왜 이걸 쓰는지는 알 것 같다.
예전에는 Docker를 공부하려고 하면
이미지,
컨테이너,
Dockerfile,
이런 단어부터 외우려고 했다.
이번에는 반대였다.
내 프로젝트를 다른 컴퓨터에서 실행해야 하는 문제가 먼저 생겼고, 그 문제를 해결하다 보니 Docker가 나왔다.
그래서인지 예전에 공부할 때보다 훨씬 이해가 빨랐다.
아직 배포는 끝나지 않았다
Docker를 준비하고 Linux 환경까지 들어갔다고 끝난 건 아니었다.
오히려 이제 진짜 배포가 남아 있었다.
내 컴퓨터에서만 열리던 화면을 인터넷에 올리고,
localhost가 아닌 주소를 만들고,
그 주소를 다른 사람에게 보내도 정말 같은 화면이 뜨는지 확인해야 했다.
그리고 다음 날,
브라우저 주소창에서 처음으로 localhost가 아닌 주소로 내가 만든 서비스를 열었다.
그 순간은 생각보다 꽤 좋았다.
'RE:개발자' 카테고리의 다른 글
| 개발자인 내가 테스트하면 이상하게 잘 된다 | RE:개발자 #13 (0) | 2026.09.25 |
|---|---|
| localhost를 지웠더니 진짜 서비스가 됐다 | RE:개발자 #12 (0) | 2026.09.24 |
| 내 컴퓨터에서는 잘 되는데, 다른 사람도 쓸 수 있어야 했다 | RE:개발자 #10 (0) | 2026.09.21 |
| 기능이 된다고 제품이 되는 건 아니었다 | RE:개발자 #9 (0) | 2026.09.20 |
| RE:개발자 — 다시 개발자가 되어가는 기록 | 전체 목차 (0) | 2026.09.20 |