ASP.NET Core 애플리케이션을 실행하기 위해 애플리케이션을 빌드하고 Jenkins를 사용하여 Git에서 가져온 컨테이너의 소스 코드를 복사하는 dockerfile을 생성했습니다. 따라서 내 작업 공간에서 dockerfile에서 다음을 수행합니다.
WORKDIR /app
COPY src src
Jenkins는 Git을 사용하여 호스트의 파일을 올바르게 업데이트하지만 Docker는 이것을 내 이미지에 적용하지 않습니다.
빌드를위한 기본 스크립트 :
#!/bin/bash
imageName=xx:my-image
containerName=my-container
docker build -t $imageName -f Dockerfile .
containerRunning=$(docker inspect --format="{{ .State.Running }}" $containerName 2> /dev/null)
if [ "$containerRunning" == "true" ]; then
docker stop $containerName
docker start $containerName
else
docker run -d -p 5000:5000 --name $containerName $imageName
fi
새 컨테이너 가 빌드 되기 전에 컨테이너 --rm
및 --no-cache
매개 변수 와 같은 다른 작업을 시도 docker run
하고 컨테이너 를 중지 / 제거했습니다 . 내가 여기서 뭘 잘못하고 있는지 잘 모르겠습니다. 을 호출 COPY src src
하면 레이어 ID가 발생하고 캐시 호출이 없으므로도 커가 이미지를 올바르게 업데이트하는 것 같습니다 .
Step 6 : COPY src src
---> 382ef210d8fd
컨테이너를 업데이트하는 데 권장되는 방법은 무엇입니까?
내 일반적인 시나리오는 다음과 같습니다. 애플리케이션이 Docker 컨테이너의 서버에서 실행 중입니다. 이제 앱의 일부가 업데이트됩니다 (예 : 파일 수정). 이제 컨테이너가 새 버전을 실행해야합니다. Docker는 기존 컨테이너를 수정하는 대신 새 이미지 빌드를 권장하는 것 같아서 일반적인 재 빌드 방법이 옳다고 생각하지만 구현의 세부 사항을 개선해야합니다.