Go — 단 3단계로 최소한의 Docker 이미지 구축
2094 단어 optimizationgodockercontainers
Go — 단 3단계로 최소한의 Docker 이미지 구축
Docker용 Go 애플리케이션을 빌드할 때 일반적으로 golang:1.13과 같은 일부 이미지에서 시작합니다. 그러나 실제로 해당 이미지를 런타임에 사용하는 것은 리소스 낭비입니다. 절대 최소 도커 이미지로 Go 애플리케이션을 빌드하는 방법을 살펴보겠습니다.
1. Go 버전 선택
golang:latest 또는 그냥 golang을 사용하고 싶을 수도 있지만 이것이 좋은 생각이 아닌 데는 여러 가지 이유가 있지만 그 중 가장 중요한 이유는 빌드 반복성입니다. 개발하고 테스트한 것과 동일한 버전을 프로덕션 배포에 사용하는 것과 관련이 있거나 애플리케이션의 이전 버전을 패치해야 하는 경우 Go 버전을 특정 릴리스에 고정하는 것이 좋습니다. 최신 버전에서 작동할 것이라는 것을 알고 있을 때만 업데이트하세요.
따라서 항상 패치 버전 번호와 이상적으로는 이미지가 제공되는 기본 OS를 포함하여 전체 사양을 사용하십시오. 1.13.0-alpine3.10
2. 최소한으로 유지
여기에는 빌드 시간을 짧게 유지하고 결과 이미지를 작게 유지하는 두 가지 측면이 있습니다.
빠른 빌드
Docker는 중간 계층을 캐시하므로 Dockerfile을 올바르게 구성하면 이후의 각 재빌드(변경 후)에 걸리는 시간을 줄일 수 있습니다. 대략적인 규칙은 소스(예: COPY 소스)가 변경되는 빈도에 따라 명령을 정렬하는 것입니다.
또한 빌드 컨텍스트를 작게 유지하는 데 도움이 되는 .dockerignore 파일 사용을 고려해 보세요. 도커 빌드 시작). 요컨대, 리포지토리에 앱 빌드에 필요하지 않은 많은 데이터(예: 테스트, 문서 생성기용 마크다운 등)가 포함된 경우 .dockerignore가 빌드 속도를 높이는 데 도움이 됩니다. 최소한 다음 내용으로 시작할 수 있습니다. Dockerfile이 있으므로 COPY . . (그러면 안 됩니다, BTW) 해당 Dockerfile만 변경할 때 아래의 모든 항목을 실행하고 무효화할 필요가 없습니다.
.git
Dockerfile
testdata
작은 이미지
매우 간단합니다.— 스크래치를 사용합니다. 다른 것은 접근할 수 없습니다(할 수 없기 때문에). 스크래치는 실제 이미지가 아니라 완전히 비어 있는 시스템이라는 점에서 특별한 "기본"이미지입니다. 참고: 이전 버전의 docker에서는 명시적인 스크래치 이미지가 실제로 레이어로 사용되었지만 docker 1.5부터는 더 이상 해당되지 않습니다.
이것이 작동하는 방식은 하나의 Dockerfile 내에서 2단계 빌드를 사용하는 것입니다. 여기서 실제로 빌더라고 하는 하나의 이미지에 앱을 빌드한 다음(예를 들어, 실제로 원하는 이름이 될 수 있음) 결과 바이너리를 복사합니다( 및 기타 모든 필수 파일)을 스크래치 기반의 최종 이미지로 변환합니다.
3. 종합
완전한 Dockerfile이 어떻게 생겼는지 볼까요?
이 정보가 유용하다고 생각하거나 자신만의 몇 가지 팁이나 요령을 공유하고 싶다면 댓글을 남겨주세요.
Reference
이 문제에 관하여(Go — 단 3단계로 최소한의 Docker 이미지 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ivan/go-build-a-minimal-docker-image-in-just-three-steps-514i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)