Hasilkan kelas metadata Brocken pada imej Docker alpine melalui protobuf
P粉824889650
P粉824889650 2024-02-17 15:33:51
0
1
414

Sebentar tadi saya menggunakan imej ubuntu untuk menjana fail PHP melalui protoc lib dan ia menghasilkan beberapa kelas metadata yang mengandungi cincang biasa yang digunakan oleh protobuf. Begini cara ia dijana:

namespace MyApp\ProtobufMetadata\Schema\v1;

class Request
{
    public static $is_initialized = false;

    public static function initOnce() {
        $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();

        if (static::$is_initialized == true) {
          return;
        }
        $pool->internalAddGeneratedFile(hex2bin(
            "0acd010a236170692f636174616c6f672f736368656d612f76312f726571756573742e70726f746f121d6170692e636174616c6f672e736368656d612e76312e72657175657374221d0a0a47657452657175657374120f0a0776657273696f6e18012001280d4260ca022d4350515c5368617265645c53657276696365735c436174616c6f675c536368656d615c76315c52657175657374e2022d4350515c5368617265645c50726f746f6275664d657461646174615c436174616c6f675c536368656d615c7631620670726f746f33"
        ), true);

        static::$is_initialized = true;
    }
}

Tetapi sekarang saya perlu menggunakan penggunaan alpine. Saya mencipta Dockerfile dengan memasang protobuf dari github:

ENV PROTOBUF_VERSION 3.19.4
ENV PROTOBUF_URL https://github.com/google/protobuf/releases/download/v"$PROTOBUF_VERSION"/protobuf-cpp-"$PROTOBUF_VERSION".zip
RUN curl -L -o protobuf.zip "$PROTOBUF_URL"
RUN unzip protobuf.zip && cd protobuf-"$PROTOBUF_VERSION" && ./configure && make -j$(nproc) && make install

RUN cd .. && rm protobuf.zip

Tetapi selepas ini, apabila saya menjana kelas baharu, ia menjana kelas metadata dengan beberapa pandangan pelik:

<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: api/schema/v1/request.proto

namespace MyApp\ProtobufMetadata\Schema\v1;

class Request
{
    public static $is_initialized = false;

    public static function initOnce() {
        $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();

        if (static::$is_initialized == true) {
          return;
        }
        $pool->internalAddGeneratedFile(
            '
�
#api/schema/v1/request.protoapi.schema.v1.request"

GetRequest
version (
B`�-MyApp\Services\Catalog\Schema\v1\Request�-MyApp\ProtobufMetadata\Catalog\Schema\v1bproto3'
        , true);

        static::$is_initialized = true;
    }
}

Ada sesiapa yang mengalami masalah yang sama? Adakah terdapat cara untuk membetulkan pemasangan lib atau beberapa kompilasi untuk mengembalikan kod cantik menggunakan hex2bin?

Kompil dengan menggunakan arahan RoadRunner:

[ -f ./protoc-gen-php-grpc ] || ./rr get-protoc-binary
      && chmod +x ./protoc-gen-php-grpc
      && ./rr compile-proto-files"

Sistem hos ialah MacOS

P粉824889650
P粉824889650

membalas semua(1)
P粉018653751

Ini dilakukan dengan sengaja, Alpine anda mungkin hanya menjalankan versi protokol yang lebih baharu.

Berikut ialah PR untuk mengalih keluar panggilan hex2bin: https://github.com/protocolbuffers /protobuf/pull/8006

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan