Docker image with protoc and the dart-protoc-plugin.
INFO This image is updated automatically. A nightly build job checks for new versions of dart, protoc and the dart-protoc-plugin every day.
Consider you have a project structure like this:
my-project
|- lib
| |- src
| | |- generated <- the generated protobuf libraries will be here
| | |...
| |
| |- my-project.dart
|
|- protos
| |- api_spec.proto <- we want to compile this
|
|- pubspec.yaml
|...
We want to compile the protos/api_spec.proto
and write the output files to the lib/src/generated
directory.
This can be done using the following command:
docker run --rm -v=${PWD}:/project robojones/protoc-dart:latest protoc -I=protos --dart_out=lib/src/generated protos/api_spec.proto
That's a really long command โ Let's break this down!
- First, we make our project accessible inside the docker container.
We mount it to /project, which is the default working directory inside the container.
docker run --rm -v=${PWD}:/project
- Next, we specify what version of the image we want to use. We use the latest version.
robojones/protoc-dart:latest
- Finally, we run protoc inside the container.
-I=protos
tells protoc thatprotos/
is the root directory for our *.proto files.--dart_out=lib/src/generated
means that we want our output files to be in the Dart language and that it should write those files intolib/src/generated
. The last parameter,protos/api_spec.proto
, tells protoc that we want to compile that specific file.protoc -I=protos --dart_out=lib/src/generated protos/api_spec.proto
This repository (build script, Dockerfile, etc.) is published unter the MIT license. This project is not affiliated with the owners and publishers of protoc, the dart docker image or the protoc-plugin-dart plugin. Please inform yourself regarding the license terms of protoc, the dart docker image and the protoc-plugin-dart plugin. Their sources can be found here:
- Base image: dart
- protoc is downloaded from the Github release github.com/protocolbuffers/protobuf
- protoc-plugin-dart is installed from pub.dev/packages/protoc_plugin