웹 사이트 배포 예제
해당 프로젝트를 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 |