alpine 렌즈를 기반으로 go 응용 프로그램을 docker에 배치합니다
그러나 더 빠른 시작 속도와 더 작은 디스크 점용을 위해 알피니 렌즈를 기본 렌즈로 추천합니다.Alpine 운영체제는 musl libc와busybox를 사용하여 시스템의 부피와 운행 시 자원의 소모를 줄이지만 기능적으로busybox보다 훨씬 완벽하기 때문에 개원 지역사회의 점점 더 많은 사랑을 받고 있다.
Alpine Docker 미러링도 Alpine Linux 릴리스의 이러한 이점을 상속합니다.다른 Docker 미러에 비해 용량이 5MB 정도로 매우 작습니다(Ubuntu 시리즈 미러에 비해 200MB에 가깝습니다).
어떤 사람들은 왜 알파인 렌즈를 사용할 수 있느냐는 의문을 가질 수 있다.alpine 미러에는 go 환경이 없지 않습니까?
너의 의문은 옳다.alpine에는 확실히 고 환경이 없다.그러나 우리는 컴파일러에서 코드를 바이너리 파일로 미리 컴파일한 다음에 이 바이너리 파일을 ADD에서 새로운 거울로 만들 수 있다.이 바이너리 파일의 실행은 고 환경에 의존하지 않기 때문에 알핀 환경에서 직접 뛸 수 있습니다.
그러나 알핀 버전으로 컴파일하는 과정은 다른 linux, 예를 들어centos와 약간 다르다.centos에서 컴파일하기
go build main.go
그런데 알핀 버전으로 컴파일하려면 추가가 필요해요.
CGO_ENABLED=0 go build main.go
CGO_ENABLED는 기본적으로 Go의runtime 환경 변수
CGO_ENABLED=1
, 즉 기본적으로 cgo를 시작합니다. Go 코드에서 C 코드를 호출할 수 있습니다.설정CGO_ENABLED=0
을 통해 CGO가 비활성화됩니다.Dockerfile 파일 내용FROM docker.io/alpine
ADD ./golang/src/pro/main /go/main
EXPOSE 9000
CMD /go/main
dockerfile를 통해 go의 코드를 컴파일한 거울은 12.3M에 불과합니다. 물론 이것은 당신의 코드 패키지 크기에 달려 있습니다.렌즈 코드를 만들다.
docker build -f golang/Dockerfile -t mygo11 .
-f
Dockerfile 파일을 지정합니다.맨 뒷면.
에서는 현재 미러가 만들어진 컨텍스트를 지정합니다.이 컨텍스트는 Dockerfile ADD ./golang/src/pro/main /go/main
의 첫 번째 경로와 관련이 있습니다.컨텍스트가 잘못되면 ADD에서 해당 경로를 찾을 수 없어 미러링에 실패합니다.여기가 관건이야.컨텍스트와 Dockerfile 파일을 같은 디렉토리에 두는 것이 좋습니다.내가 있는 이곳은 위아래 문장을 배우기 위해 일부러 다르게 설정했을 뿐이다.부팅 컨테이너
docker run -d -p 9004:9000 mygo11
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.