arroyo single docker 镜像使用了ubuntu 作为基础镜像,里边包含了不少服务,同时基于supervisord 进行服务管理
具体dockerfile 参考github 我简单介绍一些其他服务
supervisord配置
/opt/arroyo/src/docker/single/supervisord.conf 目录
[supervisord]
nodaemon=true
[program:postgres]
command=/usr/lib/postgresql/14/bin/postgres -c config_file=/etc/postgresql/14/main/postgresql.conf
user=postgres
priority=1
startsecs=10
autostart=true
autorestart=true
[program:prometheus]
command=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml
autostart=true
autorestart=true
[program:pushgateway]
command=/usr/local/bin/pushgateway
autostart=true
autorestart=true
[program:api]
command=/usr/bin/arroyo-api
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/api.err.log
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
environment=ASSET_DIR="/opt/arroyo/src/arroyo-console/dist"
[program:controller]
# wait until postgres has hopefully started
command=bash -c "sleep 10; /usr/bin/arroyo-controller"
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/controller.err.log
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
environment=REMOTE_COMPILER_ENDPOINT="http://localhost:9000"
[program:compiler]
command=/usr/bin/arroyo-compiler-service
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/compiler.err.log
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
environment=BUILD_DIR="/opt/arroyo/build/pipeline",OUTPUT_DIR="/tmp/arroyo/build"
说明
以上包含一个arroyo-compiler-service,这个服务比较有意思,会将sql 编译为rust 代码,然后对于编译的文件进行存储可以是本地也可以是s3,目前s3似乎不兼容其他的,只支持aws的
参考资料
https://github.com/ArroyoSystems/arroyo/blob/master/docker/single/Dockerfile
https://github.com/ArroyoSystems/arroyo/blob/master/arroyo-compiler-service/src/main.rs