- This is a repository for building and pushing Docker images required by Cairo tools.
- The images are intended to be used in environments where Docker is easily applicable and Python (especially venvs) is not.
- One example of such an environment are Node.js projects, more specifically - Hardhat projects, where these images can be used by Hardhat Docker plugin.
- Images built using the linux/amd64 architecture have names:
shardlabs/cairo-cli:<TAG>. - Images built using the linux/arm64 architecture have names:
shardlabs/cairo-cli:<TAG>-arm - An image has been built for each cairo-lang version, with
TAGbeing the version in the semver format (e.g. for version0.11.2the image isshardlabs/cairo-cli:0.11.2). - The Docker Hub list of versions/tags is generally up-to-date with the official Cairo pypi repo.
- The latest version is also tagged with
latest.
Since cairo-cli:0.8.1, images come with openzeppelin-cairo-contracts Python package preinstalled.
Practically anything available with cairo-compile, starknet-compile-deprecated and starknet commands (as specified here) is also available through these images.
Here are a few usage examples (These rely on Docker bind mount; try Docker volume instead):
$ docker pull shardlabs/cairo-cli:0.11.2
$ docker run shardlabs/cairo-cli:0.11.2 cairo-compile -v
cairo-compile 0.11.2
$ docker run shardlabs/cairo-cli:0.11.2 starknet -v
starknet 0.11.2
$ docker run \
--mount type=bind,source=/my/project/contracts/,target=/contracts/ \
shardlabs/cairo-cli:0.11.2 \
cairo-compile contracts/test.cairo
{
"builtins": [],
"data": [
...
],
"debug_info": ...
...
}
$ docker run \
--mount type=bind,source=/my/project/contracts/,target=/contracts/ \
shardlabs/cairo-cli:0.11.2 \
starknet-compile-deprecated contracts/test.cairo
{
"abi": [],
"entry_points_by_type": {
...
},
...
}
$ docker run \
--mount ... \
shardlabs/cairo-cli:0.11.2 \
/usr/local/bin/target/release/starknet-compile
$ docker run \
--mount ... \
shardlabs/cairo-cli:0.11.2 \
/usr/local/bin/target/release/starknet-sierra-compile
$ docker run \
--mount ... \
shardlabs/cairo-cli:0.11.2 \
/usr/local/bin/scarb
To build a new version (typically when a new cairo-lang version is released), update the CAIRO_VERSION in config.yml and create a commit on the master branch. Building a new image will also tag it with latest. Preferably also update version references in README.md. If needed, also update other versions in config.yml.
To add new commits to the repo without building, add [skip ci] to the commit message.