remove redis and circus
This commit is contained in:
parent
b1641d1af9
commit
5485984e05
6
Makefile
6
Makefile
@ -3,10 +3,10 @@ CONFIG = ./config.nix
|
||||
|
||||
entrypoint:
|
||||
nix-build -A entrypoint \
|
||||
--arg baseConfig '(import ${CONFIG})'
|
||||
--arg config '(import ${CONFIG})'
|
||||
|
||||
install:
|
||||
$$(nix-build -A install --arg baseConfig '(import ${CONFIG})')
|
||||
$$(nix-build -A install --arg config '(import ${CONFIG})')
|
||||
|
||||
test:
|
||||
$$(nix-build --no-out-link -A pkgs.bash)/bin/bash srv-dev-env.sh \
|
||||
@ -18,5 +18,5 @@ srv.dev-shell:
|
||||
--command "cd srv/src; return"
|
||||
|
||||
srv.shell:
|
||||
nix-shell -A srv.shellWithBuild --arg baseConfig '(import ${CONFIG})' \
|
||||
nix-shell -A srv.shellWithBuild --arg config '(import ${CONFIG})' \
|
||||
--command 'cd srv/src; return'
|
||||
|
53
default.nix
53
default.nix
@ -6,71 +6,26 @@
|
||||
sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36";
|
||||
}) {},
|
||||
|
||||
baseConfig ? import ./config.nix,
|
||||
skipServices ? [],
|
||||
config ? import ./config.nix,
|
||||
|
||||
}: rec {
|
||||
|
||||
pkgs = pkgsArg;
|
||||
|
||||
config = baseConfig // {
|
||||
redisListenPath = "${config.runDir}/redis";
|
||||
};
|
||||
|
||||
srv = pkgs.callPackage (import ./srv) {
|
||||
inherit config;
|
||||
};
|
||||
|
||||
redisCfg = pkgs.writeText "mediocre-blog-redisCfg" ''
|
||||
port 0
|
||||
unixsocket ${config.redisListenPath}
|
||||
daemonize no
|
||||
loglevel notice
|
||||
logfile ""
|
||||
appendonly yes
|
||||
appendfilename "appendonly.aof"
|
||||
dir ${config.dataDir}/redis
|
||||
'';
|
||||
|
||||
redisBin = pkgs.writeScript "mediocre-blog-redisBin" ''
|
||||
#!/bin/sh
|
||||
mkdir -p ${config.dataDir}/redis
|
||||
exec ${pkgs.redis}/bin/redis-server ${redisCfg}
|
||||
'';
|
||||
|
||||
srvCircusCfg = ''
|
||||
[watcher:srv]
|
||||
cmd = ${srv.bin}
|
||||
numprocesses = 1
|
||||
'';
|
||||
|
||||
redisCircusCfg = ''
|
||||
[watcher:redis]
|
||||
cmd = ${redisBin}
|
||||
numprocesses = 1
|
||||
'';
|
||||
|
||||
circusCfg = pkgs.writeText "mediocre-blog-circusCfg" ''
|
||||
[circus]
|
||||
endpoint = tcp://127.0.0.1:0
|
||||
pubsub_endpoint = tcp://127.0.0.1:0
|
||||
|
||||
${if (!builtins.elem "srv" skipServices) then srvCircusCfg else ""}
|
||||
|
||||
${if (!builtins.elem "redis" skipServices) then redisCircusCfg else ""}
|
||||
'';
|
||||
|
||||
entrypoint = pkgs.writeScript "mediocre-blog-entrypoint" ''
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ ! -d ${config.runDir} ]; then
|
||||
mkdir -p ${config.runDir}
|
||||
fi
|
||||
|
||||
mkdir -p ${config.runDir}
|
||||
mkdir -p ${config.dataDir}
|
||||
exec ${pkgs.circus}/bin/circusd ${circusCfg}
|
||||
|
||||
exec ${srv.bin}
|
||||
'';
|
||||
|
||||
service = pkgs.writeText "mediocre-blog" ''
|
||||
|
@ -1,5 +1,6 @@
|
||||
|
||||
test_dir="$(mktemp -d)"
|
||||
trap "rm -rf $test_dir" EXIT
|
||||
|
||||
mkdir -p "$test_dir"/run
|
||||
mkdir -p "$test_dir"/data
|
||||
@ -9,21 +10,6 @@ test_cfg="(import ./config.nix) // {
|
||||
dataDir=\"${test_dir}/data\";
|
||||
}"
|
||||
|
||||
entrypoint=$(nix-build --no-out-link -A entrypoint \
|
||||
--arg baseConfig "$test_cfg" \
|
||||
--arg skipServices '["srv"]')
|
||||
|
||||
$entrypoint &
|
||||
trap "kill $!; wait; rm -rf $test_dir" EXIT
|
||||
|
||||
# NOTE this is a bit of a hack... the location of the redis socket's source of
|
||||
# truth is in default.nix, but it's not clear how to get that from there to
|
||||
# here, so we reproduce the calculation here.
|
||||
while [ ! -e $test_dir/run/redis ]; do
|
||||
echo "waiting for redis unix socket"
|
||||
sleep 1
|
||||
done
|
||||
|
||||
nix-shell -A srv.shell \
|
||||
--arg baseConfig "$test_cfg" \
|
||||
--arg config "$test_cfg" \
|
||||
"$@"
|
||||
|
@ -19,10 +19,6 @@
|
||||
export MEDIOCRE_BLOG_ML_SMTP_AUTH="${config.mlSMTPAuth}"
|
||||
export MEDIOCRE_BLOG_ML_PUBLIC_URL="${config.publicURL}"
|
||||
|
||||
# redis
|
||||
export MEDIOCRE_BLOG_REDIS_PROTO=unix
|
||||
export MEDIOCRE_BLOG_REDIS_ADDR="${config.redisListenPath}"
|
||||
|
||||
# pow
|
||||
export MEDIOCRE_BLOG_POW_SECRET="${config.powSecret}"
|
||||
|
||||
@ -38,7 +34,7 @@
|
||||
pname = "mediocre-blog-srv";
|
||||
version = "dev";
|
||||
src = ./src;
|
||||
vendorSha256 = "sha256:0kad8cyg9cd9v7m9l23jf27vkb5yfy9w89xfyrsyj7gd3q0l2yxq";
|
||||
vendorSha256 = "sha256:1vazrrg8rs9n8x40c9r53h9qnyxw59xkp0aq7jl15fliigk6q0cr";
|
||||
|
||||
# disable tests
|
||||
checkPhase = '''';
|
||||
@ -47,7 +43,7 @@
|
||||
bin = writeScript "mediocre-blog-srv-bin" ''
|
||||
#!${bash}/bin/bash
|
||||
source ${init}
|
||||
exec ${build}/bin/mediocre-blog
|
||||
exec ${build}/bin/mediocre-blog "$@"
|
||||
'';
|
||||
|
||||
shell = stdenv.mkDerivation {
|
||||
|
@ -1,55 +0,0 @@
|
||||
package cfg
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/mediocregopher/mediocre-go-lib/v2/mctx"
|
||||
"github.com/mediocregopher/radix/v4"
|
||||
)
|
||||
|
||||
// RadixClient is a single redis client which can be configured.
|
||||
type RadixClient struct {
|
||||
radix.Client
|
||||
|
||||
proto, addr string
|
||||
poolSize int
|
||||
}
|
||||
|
||||
// SetupCfg implement the cfg.Cfger interface.
|
||||
func (c *RadixClient) SetupCfg(cfg *Cfg) {
|
||||
|
||||
cfg.StringVar(&c.proto, "redis-proto", "tcp", "Network protocol to connect to redis over, can be tcp or unix")
|
||||
cfg.StringVar(&c.addr, "redis-addr", "127.0.0.1:6379", "Address redis is expected to listen on")
|
||||
cfg.IntVar(&c.poolSize, "redis-pool-size", 5, "Number of connections in the redis pool to keep")
|
||||
|
||||
cfg.OnInit(func(ctx context.Context) error {
|
||||
client, err := (radix.PoolConfig{
|
||||
Size: c.poolSize,
|
||||
}).New(
|
||||
ctx, c.proto, c.addr,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
"initializing redis pool of size %d at %s://%s: %w",
|
||||
c.poolSize, c.proto, c.addr, err,
|
||||
)
|
||||
}
|
||||
|
||||
c.Client = client
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// Annotate implements mctx.Annotator interface.
|
||||
func (c *RadixClient) Annotate(a mctx.Annotations) {
|
||||
a["redisProto"] = c.proto
|
||||
a["redisAddr"] = c.addr
|
||||
a["redisPoolSize"] = c.poolSize
|
||||
}
|
||||
|
||||
// Close cleans up the radix client.
|
||||
func (c *RadixClient) Close() error {
|
||||
return c.Client.Close()
|
||||
}
|
@ -44,11 +44,6 @@ func main() {
|
||||
httpParams.SetupCfg(cfg)
|
||||
ctx = mctx.WithAnnotator(ctx, &httpParams)
|
||||
|
||||
var radixClient cfgpkg.RadixClient
|
||||
radixClient.SetupCfg(cfg)
|
||||
defer radixClient.Close()
|
||||
ctx = mctx.WithAnnotator(ctx, &radixClient)
|
||||
|
||||
// initialization
|
||||
err := cfg.Init(ctx)
|
||||
|
||||
|
@ -3,17 +3,14 @@ module github.com/mediocregopher/blog.mediocregopher.com/srv
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/adrg/frontmatter v0.2.0
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21
|
||||
github.com/emersion/go-smtp v0.15.0
|
||||
github.com/gomarkdown/markdown v0.0.0-20220510115730-2372b9aa33e5
|
||||
github.com/google/uuid v1.3.0
|
||||
github.com/gorilla/feeds v1.1.1 // indirect
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
||||
github.com/gorilla/feeds v1.1.1
|
||||
github.com/hashicorp/golang-lru v0.5.4
|
||||
github.com/mattn/go-sqlite3 v1.14.8
|
||||
github.com/mediocregopher/mediocre-go-lib/v2 v2.0.0-beta.0.0.20220506011745-cbeee71cb1ee
|
||||
github.com/mediocregopher/radix/v4 v4.0.0-beta.1.0.20210726230805-d62fa1b2e3cb
|
||||
github.com/rubenv/sql-migrate v0.0.0-20210614095031-55d5740dbbcc
|
||||
github.com/stretchr/testify v1.7.0
|
||||
github.com/tilinna/clock v1.1.0
|
||||
@ -22,5 +19,5 @@ require (
|
||||
golang.org/x/image v0.0.0-20220413100746-70e8d0d3baa9
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
)
|
||||
|
@ -1,12 +1,9 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
||||
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
||||
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/adrg/frontmatter v0.2.0 h1:/DgnNe82o03riBd1S+ZDjd43wAmC6W35q67NHeLkPd4=
|
||||
github.com/adrg/frontmatter v0.2.0/go.mod h1:93rQCj3z3ZlwyxxpQioRKC1wDLto4aXHrbqIsnH9wmE=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
@ -68,8 +65,6 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
|
||||
github.com/gorilla/feeds v1.1.1 h1:HwKXxqzcRNg9to+BbvJog4+f3s/xzvtZXICcQGutYfY=
|
||||
github.com/gorilla/feeds v1.1.1/go.mod h1:Nk0jZrvPFZX1OBe5NPiddPw7CfwF6Q9eqzaBbaightA=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
@ -117,8 +112,6 @@ github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mediocregopher/mediocre-go-lib/v2 v2.0.0-beta.0.0.20220506011745-cbeee71cb1ee h1:AWRuhgn7iumyhPuxKwed1F1Ri2dXMwxKfp5YIdpnQIY=
|
||||
github.com/mediocregopher/mediocre-go-lib/v2 v2.0.0-beta.0.0.20220506011745-cbeee71cb1ee/go.mod h1:wOZVlnKYvIbkzyCJ3dxy1k40XkirvCd1pisX2O91qoQ=
|
||||
github.com/mediocregopher/radix/v4 v4.0.0-beta.1.0.20210726230805-d62fa1b2e3cb h1:7Y2vAC5q44VJzbBUdxRUEqfz88ySJ/6yXXkpQ+sxke4=
|
||||
github.com/mediocregopher/radix/v4 v4.0.0-beta.1.0.20210726230805-d62fa1b2e3cb/go.mod h1:ajchozX/6ELmydxWeWM6xCFHVpZ4+67LXHOTOVR0nCE=
|
||||
github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4=
|
||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
@ -167,7 +160,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/tilinna/clock v1.0.2/go.mod h1:ZsP7BcY7sEEz7ktc0IVy8Us6boDrK8VradlKRUGfOao=
|
||||
github.com/tilinna/clock v1.1.0 h1:6IQQQCo6KoBxVudv6gwtY8o4eDfhHo8ojA5dP0MfhSs=
|
||||
github.com/tilinna/clock v1.1.0/go.mod h1:ZsP7BcY7sEEz7ktc0IVy8Us6boDrK8VradlKRUGfOao=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
@ -252,9 +244,7 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
Loading…
Reference in New Issue
Block a user