首页 > 其他分享 >Dockerfile

Dockerfile

时间:2024-05-05 14:56:55浏览次数:25  
标签:src protoc -- server PROTOC go Dockerfile

 

FROM --platform=$BUILDPLATFORM alpine as protoc
ARG BUILDPLATFORM=linux/amd64 TARGETOS=linux TARGETARCH=amd64

# download the protoc binary from github
# We unzip the file into /usr/local. Notice that we are extracting both the protoc
# binary (/bin/protoc) and the /include folder because the first one is the compiler that we are
# going to use and the second one is all the files needed to include Well-Known Types.
RUN export PROTOC_VERSION=26.1 \
    && export PROTOC_ARCH=$(uname -m | sed s/aarch64/aarch_64/) \
    && export PROTOC_OS=$(echo $TARGETOS | sed s/darwin/linux/) \
    && export PROTOC_ZIP=protoc-$PROTOC_VERSION-$PROTOC_OS-$PROTOC_ARCH.zip \
    && echo "downloading: " https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/$PROTOC_ZIP \
    && wget https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/$PROTOC_ZIP \
    && unzip -o $PROTOC_ZIP -d /usr/local bin/protoc 'include/*' \
    && rm -f $PROTOC_ZIP

FROM --platform=$BUILDPLATFORM golang:1.22-alpine as build
ARG BUILDPLATFORM=linux/amd64 TARGETOS=linux TARGETARCH=amd64

# copy the protoc binary and the protobuf includes
COPY --from=protoc /usr/local/bin/protoc /usr/local/bin/protoc
COPY --from=protoc /usr/local/include/google /usr/local/include/google

# download protoc plugins
RUN go env -w GOPROXY=https://goproxy.io,direct
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

# copy proto files into /go/src/proto
WORKDIR /go/src/proto
COPY ./proto .

# generate code out of proto files
WORKDIR /go
ENV MODULE=zgrpc-go-professionals
RUN protoc --go_out=src \
           --go_opt=module=$MODULE \
           --go-grpc_out=src \
           --go-grpc_opt=module=$MODULE \
           src/proto/todo/v2/*.proto

# copy code into /go/src/server
WORKDIR /go/src/server
COPY ./server .

# copy go.mod into go/src
WORKDIR /go/src
COPY go.mod .

# download dependencies and build
WORKDIR /go/src
RUN go mod tidy
WORKDIR /go/src/server
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-s -w" -o /go/bin/app

FROM scratch

# copy certs into /certs
COPY ./certs/server_cert.pem ./certs/server_cert.pem
COPY ./certs/server_key.pem ./certs/server_key.pem

# copy the previously built binary into smaller image
COPY --from=build /go/bin/app /
EXPOSE 50051
CMD ["/app", "0.0.0.0:50051"]

 

This file can be built successfully.

标签:src,protoc,--,server,PROTOC,go,Dockerfile
From: https://www.cnblogs.com/zhangzhihui/p/18173489

相关文章

  • DockerFile
    FROMcentos:7MAINTAINERzhangsan<[email protected]>ENVMYPATH/usr/localWORKDIR$MYPATHRUNyum-yinstallvimRUNyum-yinstallnet-toolsEXPOSE80CMDecho$MYPATHCMDecho"----end----"CMD/bin/bashDockerFile文件教学连接单阶段构建例子FROM......
  • 【前端开发】前端编写Dockerfile构建镜像流程
    1、demo#Dockerfile#FROMnode:18//基础镜像,node服务就用node基础镜像#切换到root用户USERroot#创建工作区目录WORKDIR/appENVBASEPATH/app#复制文件到工作区COPYpackage.jsonpackage-lock.jsonecosystem.config.js.npmrc$BASEPATH/COPY/src$BASE......
  • 使用 Dockerfile 构建和定制 Docker 镜像
    前言Dockerfile是用于构建Docker镜像的文本文件,其中包含了一系列指令和参数,用于定义镜像的内容、环境和运行方式。本文将介绍如何编写和使用Dockerfile,以及常用的指令和技巧,帮助大家快速掌握Docker镜像的构建和定制过程。什么是DockerfileDockerfile是一个文本文件,其内......
  • 使用 Dockerfile 定制镜像【转】
    前言大家好,本文是对Docker自定义镜像的详细讲解,讲解了如何进行构建自己的Docker镜像以及Dockerfile的操作指令。希望对大家有所帮助~一、使用Dockerfile定制镜像1.1、Dockerfile定制镜像镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改......
  • Dockerfile - Install protoc
     FROM--platform=$BUILDPLATFORMalpineasprotocARGBUILDPLATFORM=linux/amd64TARGETOS=linuxTARGETARCH=amd64#downloadtheprotocbinaryfromgithub#Weunzipthefileinto/usr/local.Noticethatweareextractingboththeprotoc#binary(/bin/pr......
  • Docker使用Dockerfile部署Fastapi应用
    1#使用官方的Python运行时作为基础镜像2FROMpython:3.9-slim34#设置工作目录5WORKDIR/app67#复制应用程序的依赖文件到工作目录8COPYrequirements.txt.910#安装应用程序的依赖11RUNpipinstall--no-cache-dir-rrequirements.txt12......
  • DOCKER配置之DOCKERFILE
    要跑深度学习,就要有环境,要有环境就要有虚拟环境管理一般python管理都会用ANACONDA或者MINICONDA,这个时候使用conda就直接结了,不需要再关心其他事情。然而部分数据集Ubuntu18.04的环境实在是过于逆天(不是针对某个数据集或代码,只能说大部分数据集和代码都在18.04以及python3.8的远......
  • fs.1.10 ON CENTOS7 dockerfile模式
     概述freeswitch是一款简单好用的VOIP开源软交换平台。centos7docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。环境dockerengine:Version24.0.6centosdocker:7freeswitch:v1.10.7dockerfile创建空目录,创建dockerfile文件。github访问经常失败,先下载好源......
  • Dockerfile 安装centos案例
    1.编写dockerfile文件去安装cetos的操作步骤:   2.执行Dockerfile文件:dockerbuild-tcentosjava8:1.5.ps:其中,-t选项用于指定镜像的名称,centosjava8:1.5是你为镜像命名的名称,可以替换成其他任意名称。.表示当前目录,指示Docker在当前目录下寻找Dockerfil......
  • 4-1 dockerfile介绍
    dockerfile介绍一dockerfile概念dockerfile是自定义镜像的一套规则(自定义镜像)dockerfie由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层dockerfile的原理就是镜像分层:1Dockerfile中的每个指令都会创建一个新的镜像层(是一个临时的容器,执行完后将......