Skip to content
[ci cd] Docker compose로 Vitepress 배포하기 main image

[ci cd] Docker compose로 Vitepress 배포하기

schedule
update
# docker
# vitepress
# docker compose

INFO

이 포스트는 아래 링크의 포스트에 연결되는 내용이니 혹시나 안 보고 왔으면 보고 오도록
[ci cd] Docker로 Vitepress 배포하기

이번 포스트는 이전에 너무 길게 적어서 짧게 쓰고 넘어가려고 한다.

1. 도커 컴포즈 작성 ​

yml
version: 3 # docker compose가 구버전인 사람만 붙여주면 된다. 난 최신 버전써서 안붙여도 된다.

name: blog
services:
  docs:
    build: .
    container_name: blog
    ports:
      - '8080:80'
    stdin_open: true
    tty: true

1-1. version ​

이전에 docker-compose.yml 작성해 봤다고 하는 사람들은 version 왜 안 적어도 되냐고 할 수도 있다.
최신 버전의 docker compose에서는 없어졌다. 이제 안 적어도 된다.

1-2. name ​

bash
docker compose ps

했을 때 나오는 docker compose의 이름이다.

1-3. services ​

원래 같았으면 services에 다른 docker파일에 있는 이것저것 다 한 번에 띄우고 한 네트워크로 묶겠지만 우리는 정적파일 배포하는 nginx 컨테이너 하나밖에 없기 때문에 이 밑에 하나만 할 거다.

서비스 이름은 마음대로 지어도 되는데 나는 그래도 문서니까 docs라고 이름 붙여뒀다.

1-3-1. build ​

빌드는 Dockerfile의 위치를 나타내게 된다.
다른 곳에 올려뒀으면 image라고 적어서 외부 저장소의 이미지를 바로 작성해 두거나 로컬에서 빌드한 이미지를 사용하겠지만
나는 이미 빌드하는 것조차 귀찮기 때문에 그냥 docker compose가 알아서 내 dockerfile 가지고 혼자 이미지 만들어서 띄웠으면 좋겠기에 현재 경로인 . (점)으로 적어뒀다.

1-3-2. container_name ​

안 적어줘도 알아서 아무 이름 붙여다 두는데, 나중에 exec 하거나 할 때 그거 검색해서 찾고 그러는 거 귀찮아서 미리 blog라고 고정해 뒀다.
맘에 드는 거로 바꿔서 작성해 둬도 된다. 오늘은 안 쓸 거니까

1-3-3. ports ​

docker run 할 때 -p 옵션 줘서 하던 그거다.
모르겠으면 이전글 다시 보고 오는 게 좋을 거 같다.

1-3-4. stdin_open & tty ​

가끔 컨테이너 내부에 들어가서 확인하거나 할 때가 있을 수도 있는데 그렇게 하려면 이거 적어둬야 한다.

2. 실행 ​

bash
docker compose up -d

# 구버전일 경우
docker-compose up -d

뒤에 붙여주는 -d 옵션은 뒤에서 알아서 혼자 돌고 있으라는 소리다.
더 정확하고 자세히 알고 싶다면 docker compose 공식 문서를 보자

3. 업데이트 ​

bash
docker compose up -d --build

# 구버전일 경우
docker-compose up -d --build

--build 옵션은 위에서 말한 공식 문서 한 번이라도 보고 왔으면 알 텐데 모르겠으면 진짜 한 번만 보러 가라.
해당 명령어가 실패하면 기존에 돌고 있던 컨테이너가 그대로 돌고 있을 것이고 성공하면 업데이트가 바로 된다.
일단 내가 작성한 dockerfile 기준으론 이렇게만 적어도 업데이트가 될 텐데 다른 상황인 사람들은 down한번 해주고 다시 up 해주면 될 거다.

4. 중단 ​

bash
docker compose down

# 구버전일 경우
docker-compose down

마치며 ​

docker run 해가 지고 이것저것 옵션 붙여가면서 꾸역꾸역 실행하는 거보다는 docker compose 파일 하나 작성해 두고 실행하면 편하고 좋은 거 같다.
팀원들 알려줄 때도 명령어 한 줄만 알려줘도 돼서 편하고

Updated at: