코드를 수정하고, 테스트를 돌리고, 도커 이미지를 빌드하고, 레지스트리에 푸시하고, 서버에 접속해서 이미지를 pull 받고, 컨테이너를 재시작한다. 배포할 때마다 이 과정을 반복한다. 한두 번이야 괜찮다. 그런데 하루에 몇 번씩 배포하면? 명령어를 빼먹거나, 테스트를 건너뛰거나, 브랜치를 잘못 배포하는 실수가 생기기 시작한다. 사람이 반복하면 실수가 생기고
코드를 수정하고, 테스트를 돌리고, 도커 이미지를 빌드하고, 레지스트리에 푸시하고, 서버에 접속해서 이미지를 pull 받고, 컨테이너를 재시작한다. 배포할 때마다 이 과정을 반복한다. 한두 번이야 괜찮다. 그런데 하루에 몇 번씩 배포하면? 명령어를 빼먹거나, 테스트를 건너뛰거나, 브랜치를 잘못 배포하는 실수가 생기기 시작한다. 사람이 반복하면 실수가 생기고
Dockerfile을 작성하고, 이미지를 빌드하고, 컨테이너를 띄웠다. 여기까지는 잘 된다. 그런데 실제 서비스는 앱 하나로 돌아가지 않는다. 웹 서버 뒤에는 데이터베이스가 있고, 캐시가 있고, 때로는 메시지 큐도 있다. 이걸 전부 으로 하나씩 띄우면 어떻게 될까? 컨테이너마다 네트워크를 연결하고, 포트를 매핑하고, 실행 순서를 맞추는 걸 매번 수동으로 해
도커로 컨테이너를 하나 띄우는 건 어렵지 않다. 한 줄이면 끝난다. 그런데 컨테이너가 10개, 100개로 늘어나면 얘기가 달라진다. 어느 서버에 올릴지, 몇 개를 띄울지, 하나가 죽으면 누가 다시 띄울지 — 직접 관리하기 시작하면 감당하기 어려워진다. 여기서 문제가 생긴다. 컨테이너는 만드는 것보다 운영하는 게 훨씬 어렵다. 서버가 죽어도 서비스는 살아 있
분명 내 로컬에서는 잘 돌아갔다. 그런데 서버에 올리니까 안 된다. 개발하다 보면 누구나 한 번쯤 겪는 상황이다. 원인은 단순하다. 개발 환경과 실행 환경이 다르기 때문이다. Node.js 버전, 운영체제, 설치된 패키지 — 어느 하나만 달라도 문제가 생길 수 있다. 도커는 이 환경 차이를 줄이기 위해 사용하는 도구다. 이 글에서는 도커의 기본 개념부터 이
새 글이 올라오면 Develog 알림으로 알려드려요