I'd like to run gobetween in AWS ECS. But having hard time figuring how to pass it a default configuration. CloudWatch logs show:
gobetween v0.5.0
open /etc/gobetween/conf/gobetween.toml: no such file or directory
I see some volume options in ECS container definition, but not seeing how I would get a config file there to map to the /etc/gobetween/conf
I saw we can tell gobetween to use URL for config file, but the Dockerfile in GitHub specifically calls command options for hardcoded path.
CMD ["/usr/bin/gobetween", "-c", "/etc/gobetween/conf/gobetween.toml"]
So when attempting to pass env variables via ECS, we get a different error
gobetween v0.5.0
Passed GOBETWEEN env var and command-line arguments: only one allowed
Would it be possible to publish a different Dockerfile tag on yyyar's account for a more ECS friendly version, like with no static file configuration passed, so we can use the environment variable approach? Or any other ideas?
Okay, I figured out the way to do this in ECS Fargate.... I'm sure there are multiple paths to doing it without requiring any work from Gobetween team. But, the way I was able to do it was to override Dockerfile CMD by defining entryPoint in the container definition which I am sure would be easy for anyone with Docker experience to think of (this is my day 2 of exploring Docker and mostly through the lens of ECS):
"containerDefinitions": [
{
...
"entryPoint": [
"/usr/bin/gobetween"
],
...
"environment": [
{
"name": "GOBETWEEN",
"value": "[\"from-url\", \"http://some.url/gobetween.toml", \"-f\", \"toml\"]"
}
...
[servers.krast]
protocol = "tcp"
bind = "0.0.0.0:3000"
balance = "roundrobin"
max_connections = 10000
client_idle_timeout = "10m"
backend_idle_timeout = "10m"
backend_connection_timeout = "2s"
[servers.krast.discovery]
kind = "static"
static_list = [
"127.0.0.1:4000 weight=1",
"127.0.0.1:2000 weight=1"
]
[servers.krast.healthcheck]
fails = 1
passes = 1
interval = "1s"
timeout="1s"
kind = "ping"
ping_timeout_duration = "500ms"
dch@wintermute /r/gobetween> git commit -am 'hack FreeBSD support'
[master 40b5817] hack FreeBSD support
1 file changed, 1 insertion(+)
dch@wintermute /r/gobetween> gsh
commit 40b5817fbe7825f815569e0e837291cc58ab7e25 (HEAD -> master)
Author: Dave Cottlehuber <dch@skunkwerks.at>
Date: Fri Sep 7 10:56:05 2018 +0000
hack FreeBSD support
diff --git a/Makefile b/Makefile
index 6976501..c729bc5 100644
--- a/Makefile
+++ b/Makefile
@@ -88,6 +88,7 @@ dist:
@# os arch cgo ext
@for arch in "linux 386 1 " "linux amd64 1 " \
"windows 386 0 .exe " "windows amd64 0 .exe " \
+ "freebsd 386 1 " "freebsd amd64 1 " \
"darwin 386 0 " "darwin amd64 0 "; \
do \
set -- $$arch ; \
dch@wintermute /r/gobetween> gmake deps build
rm -rf ./vendor/src
rm -rf ./vendor/pkg
rm -rf ./vendor/bin
go get -v github.com/burntsushi/toml
github.com/burntsushi/toml (download)
go get -v github.com/miekg/dns
github.com/miekg/dns (download)
go get -v github.com/fsouza/go-dockerclient
github.com/fsouza/go-dockerclient (download)
github.com/docker/docker (download)
github.com/docker/go-units (download)
github.com/sirupsen/logrus (download)
Fetching https://golang.org/x/crypto/ssh/terminal?go-get=1
Parsing meta tags from https://golang.org/x/crypto/ssh/terminal?go-get=1 (status code 200)
get "golang.org/x/crypto/ssh/terminal": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at https://golang.org/x/crypto/ssh/terminal?go-get=1
get "golang.org/x/crypto/ssh/terminal": verifying non-authoritative meta tag
Fetching https://golang.org/x/crypto?go-get=1
Parsing meta tags from https://golang.org/x/crypto?go-get=1 (status code 200)
golang.org/x/crypto (download)
Fetching https://golang.org/x/sys/unix?go-get=1
Parsing meta tags from https://golang.org/x/sys/unix?go-get=1 (status code 200)
get "golang.org/x/sys/unix": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at https://golang.org/x/sys/unix?go-get=1
get "golang.org/x/sys/unix": verifying non-authoritative meta tag
Fetching https://golang.org/x/sys?go-get=1
Parsing meta tags from https://golang.org/x/sys?go-get=1 (status code 200)
golang.org/x/sys (download)
github.com/Nvveen/Gotty (download)
github.com/docker/docker/pkg/mount
# github.com/docker/docker/pkg/mount
vendor/src/github.com/docker/docker/pkg/mount/mountinfo_freebsd.go:40:24: undefined: p
gmake: *** [Makefile:62: deps] Error 2