
원인
<aside>
docker.io → Debian/Ubuntu apt 저장소에서 관리 → 안정성 확보 때문에, 업데이트 주기가 느림 → 현재 20.10.x에서 멈춰있음 (호스트 docker와 API 호환 불가)
</aside>
호스트 도커

CD-server 도커

해결 : CD-server의 Dockerfile의 도커를 최신버전으로 교체
기존
RUN apt-get update && apt-get install -y git docker.io && \\
rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y git curl && \\
curl -fsSL <https://get.docker.com> | sh && \\
rm -rf /var/lib/apt/lists/*

1번 경고 해결 (최종 : CD-server/src/server.ts & docker-compose-sub.yml 수정)
docker login → 경고 발생 (WARNING! Yo… )
호스트 docker의 conifg.json 마운트 추가 후 테스트 결과

원인 : config.json만 마운트 하면 호스트 환경이 windows인데 config.json 안에 desktop-linux(windows 전용)인 DOCKER_CONTEXT를 그대로 읽으려고 하기에 발생한 문제.
즉, 호스트(windows)와 컨테이너(linux)의 OS차이에서 오는 config.json 차이점을 고려하지 않고 그대로 추가 한 것이 문제가 됨.
해결 (docker-compose-sub.yml에 cd-server에 환경 값 추가)
cd-server:
environment:
- DOCKER_CONTEXT=default
volumes:
- ~/.docker/config.json:/root/.docker/config.json
const auth = Buffer.from(`ldj5098:${GITHUB_TOKEN}`).toString('base64');
const configJson = JSON.stringify({ auths: { 'ghcr.io': { auth } } });
await runCommand(
`mkdir -p /root/.docker && ` +
`echo '${configJson}' > /root/.docker/config.json && ` +
`docker pull ${IMAGE_BASE}:sha-${imageTag}`
);
cd-server:
environment:
- DOCKER_CONTEXT=default
2번 오류 해결 (CD-server/src/server.ts 수정) - GHCR은 소문자만 받기 때문에 코드에서 소문자로 자동 변환
const IMAGE_BASE = `ghcr.io/${GITHUB_REPO.toLowerCase()}/backend`;