본문 바로가기

GitOps/Docker

[Docker] 웹사이트 배포

웹 사이트 배포 예제

해당 프로젝트를 fork하여 사용하였습니다.

 

# git으로 프로젝트 clone 및 경로 이동
git init
git clone <github 주소>
cd linux_tweet_app

# 환경 변수로 도커 ID를 저장해서 간편하게 사용 (안해도 됨)
export DOCKER_ID=<docker hub ID>

# 프로젝트를 기반으로 이미지 빌드. 이미지 이름은 DockerID/애플리케이션 이름/버전이 관례인듯 함
docker image build --tag $DOCKER_ID/linux_tweet_app:1.0 .

# -d(--detach)로 생성된 이미지를 백그라운드에서 실행. 
# -p(--publish)로 외부 네트워크 8080포트에서 들어오는 입력을 내부 컨테이너 80포트로 포트포워딩
docker run -d -p 8080:80 --name linux_tweet_app $DOCKER_ID/linux_tweet_app:1.0

#localhost:8080에서 접속을 확인하고 컨테이너 삭제
docker stop linux_tweet_app
docker rm linux_tweet_app

 


바인드 마운트

로컬 디렉토리를 컨테이너에 마운트하여 소스 코드 변경에 따라 재빌드 및 버전 발행을 생략할 수 있음.

 

# --mount 옵션으로 bind mount함.
docker run -d -p 8080:80 --name linux_tweet_app \
--mount type=bind,source="$(pwd)",target=/usr/share/nginx/html \
$DOCKER_ID/linux_tweet_app:1.0

# 로컬의 index.html을 수정함. 웹 사이트도 수정된 것을 알 수 있음.
cp index-new.html index.html

# 컨테이너 삭제
docker stop linux_tweet_app
docker rm linux_tweet_app

# 다시 run하면 이미지는 그대로이기 때문에 수정 전임을 볼 수 있음.
docker run -d -p 8080:80 --name linux_tweet_app $DOCKER_ID/linux_tweet_app:1.0

 


이미지 업데이트

# 바뀐 로컬로 다시 이미지를 빌드해서 실행하면 캐시된 계층 + 새로운 계층으로 바뀐 버전의 컨테이너가 생김
docker image build --tag $DOCKER_ID/linux_tweet_app:1.1 .
docker run -d -p 8080:80 --name linux_tweet_app $DOCKER_ID/linux_tweet_app:1.1

 


Docker Hub에 이미지 업로드

# 만들었던 이미지 검색
docker image ls -f reference="$DOCKER_ID/*"

# authentication 코드 발급 및 브라우저 인증으로 로그인 가능
docker login docker.io

# 옛날 방식으로 로그인하는 방법 (ID, PW)
docker logout
docker login -u <username> docker.io

# registry에 push
# https://hub.docker.com/u/<user_id>에서 확인 가능
docker image push $DOCKER_ID/linux_tweet_app:1.0

'GitOps > Docker' 카테고리의 다른 글

[Docker] 도커 네트워크  (0) 2025.01.12
[Docker] 이미지  (0) 2025.01.11
[Docker] 컨테이너  (0) 2025.01.10
[Docker] 개념  (0) 2025.01.09