zot-docker-proxy

A simple proxy server for Zot to enable use of the Docker CLI. This is to work around Zot issue 2928, as Zot will not add support for the Docker CLI.
Huge shoutout to @gabe565 for the original implementation of this proxy server and discovering the changes needed to support the Docker CLI.
Usage
The proxy server is configured either by command line flags, a configuration file, or environment variables. All three methods can be used together, with command line flags taking precedence over environment variables, which take precedence over the configuration file.
Configuration Options
| Flag |
Env Variable |
Config File Option |
Description |
Default |
--log-level |
LOG_LEVEL |
log-level |
The log level to use. Options are debug, info, warn, error. |
info |
--port |
PORT |
port |
The port to listen on for incoming connections. |
8080 |
--secret |
SECRET |
secret |
Secret used to sign tokens, required. |
None (must specify) |
--zot-url |
ZOT_URL |
zot-url |
The URL of the Zot registry to proxy requests to. Must be specified. |
None (must specify) |
--my-url |
MY_URL |
my-url |
The URL of this zot-docker-proxy instance. Used in the token service to generate URLs. Must be specified. |
None (must specify) |
--cors-allowed-origins |
CORS_ALLOWED_ORIGINS |
cors-allowed-origins |
A list of allowed origins for CORS. If not specified, all origins are allowed. |
["https://*","http://*"] |
--config |
CONFIG |
N/A |
The path to the configuration file. |
config.yaml |
Minimal Example Configuration File
zot-url: https://zot.example.com
my-url: http://localhost:8080
secret: change-me
Running with Docker
docker run -d \
-p 8080:8080 \
-e ZOT_URL=https://zot.example.com \
-e MY_URL=http://localhost:8080 \
-e SECRET=change-me \
--name zot-docker-proxy \
ghcr.io/usa-reddragon/zot-docker-proxy:latest
Building from Source
git clone https://github.com/USA-RedDragon/zot-docker-proxy.git
cd zot-docker-proxy
go build .
./zot-docker-proxy --zot-url https://zot.example.com --my-url http://localhost:8080 --secret change-me