diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index cadcb2eba..a5abdb1fb 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,6 +1,9 @@ { "ImportPath": "github.com/emilevauge/traefik", "GoVersion": "go1.4.2", + "Packages": [ + "./..." + ], "Deps": [ { "ImportPath": "github.com/BurntSushi/toml", @@ -36,10 +39,218 @@ "Comment": "v0.1-70-gc7477ad", "Rev": "c7477ad8e330bef55bf1ebe300cf8aa67c492d1b" }, + { + "ImportPath": "github.com/docker/distribution", + "Comment": "v2.0.0-467-g9038e48", + "Rev": "9038e48c3b982f8e82281ea486f078a73731ac4e" + }, + { + "ImportPath": "github.com/docker/docker/api", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/cliconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/daemon/network", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/graph/tags", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/image", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/opts", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/archive", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/fileutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/homedir", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/httputils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/ioutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/jsonmessage", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/mflag", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/nat", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/parsers", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/pools", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/promise", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/random", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/stdcopy", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/stringid", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/symlink", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/system", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/tarsum", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/term", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/timeutils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/tlsconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/ulimit", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/units", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/urlutil", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/useragent", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/pkg/version", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/registry", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/runconfig", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/utils", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/docker/volume", + "Comment": "v1.4.1-5200-gf39987a", + "Rev": "f39987afe8d611407887b3094c03d6ba6a766a67" + }, + { + "ImportPath": "github.com/docker/libcompose/docker", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, + { + "ImportPath": "github.com/docker/libcompose/logger", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, + { + "ImportPath": "github.com/docker/libcompose/lookup", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, + { + "ImportPath": "github.com/docker/libcompose/project", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, + { + "ImportPath": "github.com/docker/libcompose/utils", + "Rev": "aad672800904307e96a2c21cad1420f3080e0f35" + }, + { + "ImportPath": "github.com/docker/libtrust", + "Rev": "9cbd2a1374f46905c68a4eb3694a130610adc62a" + }, { "ImportPath": "github.com/elazarl/go-bindata-assetfs", "Rev": "d5cac425555ca5cf00694df246e04f05e6a55150" }, + { + "ImportPath": "github.com/flynn/go-shlex", + "Rev": "3f9db97f856818214da2e1057f8ad84803971cff" + }, { "ImportPath": "github.com/fsouza/go-dockerclient", "Rev": "0239034d42f665efa17fd77c39f891c2f9f32922" @@ -102,6 +313,15 @@ "ImportPath": "github.com/mailgun/timetools", "Rev": "fd192d755b00c968d312d23f521eb0cdc6f66bd0" }, + { + "ImportPath": "github.com/opencontainers/runc/libcontainer/user", + "Comment": "v0.0.4-21-g4ab1324", + "Rev": "4ab132458fc3e9dbeea624153e0331952dc4c8d5" + }, + { + "ImportPath": "github.com/samalba/dockerclient", + "Rev": "cfb489c624b635251a93e74e1e90eb0959c5367f" + }, { "ImportPath": "github.com/thoas/stats", "Rev": "54ed61c2b47e263ae2f01b86837b0c4bd1da28e8" @@ -110,11 +330,23 @@ "ImportPath": "github.com/unrolled/render", "Rev": "26b4e3aac686940fe29521545afad9966ddfc80c" }, + { + "ImportPath": "github.com/vdemeester/shakers", + "Rev": "8fe734f75f3a70b651cbfbf8a55a009da09e8dc5" + }, + { + "ImportPath": "golang.org/x/net/context", + "Rev": "d9558e5c97f85372afee28cf2b6059d7d3818919" + }, { "ImportPath": "gopkg.in/alecthomas/kingpin.v2", "Comment": "v2.0.12", "Rev": "639879d6110b1b0409410c7b737ef0bb18325038" }, + { + "ImportPath": "gopkg.in/check.v1", + "Rev": "11d3bc7aa68e238947792f30573146a3231fc0f1" + }, { "ImportPath": "gopkg.in/fsnotify.v1", "Comment": "v1.2.0", @@ -124,6 +356,10 @@ "ImportPath": "gopkg.in/mgo.v2/bson", "Comment": "r2015.06.03-5-g22287ba", "Rev": "22287bab4379e1fbf6002fb4eb769888f3fb224c" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "7ad95dd0798a40da1ccdff6dff35fd177b5edf40" } ] } diff --git a/Godeps/_workspace/src/github.com/docker/docker/autogen/dockerversion/dockerversion.go b/Godeps/_workspace/src/github.com/docker/docker/autogen/dockerversion/dockerversion.go new file mode 100644 index 000000000..1c2d32547 --- /dev/null +++ b/Godeps/_workspace/src/github.com/docker/docker/autogen/dockerversion/dockerversion.go @@ -0,0 +1,12 @@ +// AUTOGENERATED FILE; see ./hack/make/.go-autogen +package dockerversion + +var ( + GITCOMMIT string = "" + VERSION string = "" + BUILDTIME string = "" + + IAMSTATIC string = "true" + INITSHA1 string = "" + INITPATH string = "" +) diff --git a/integration/basic_test.go b/integration/basic_test.go new file mode 100644 index 000000000..4ad3aafca --- /dev/null +++ b/integration/basic_test.go @@ -0,0 +1,51 @@ +package main + +import ( + "fmt" + "net/http" + "os/exec" + "time" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func (s *SimpleSuite) TestNoOrInexistentConfigShouldFail(c *check.C) { + cmd := exec.Command(traefikBinary) + output, err := cmd.CombinedOutput() + + c.Assert(err, checker.NotNil) + c.Assert(string(output), checker.Contains, "Error reading file open traefik.toml: no such file or directory") + + nonExistentFile := "non/existent/file.toml" + cmd = exec.Command(traefikBinary, nonExistentFile) + output, err = cmd.CombinedOutput() + + c.Assert(err, checker.NotNil) + c.Assert(string(output), checker.Contains, fmt.Sprintf("Error reading file open %s: no such file or directory", nonExistentFile)) +} + +func (s *SimpleSuite) TestInvalidConfigShouldFail(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/invalid_configuration.toml") + output, err := cmd.CombinedOutput() + + c.Assert(err, checker.NotNil) + c.Assert(string(output), checker.Contains, "Error reading file Near line 1") +} + +func (s *SimpleSuite) TestSimpleDefaultConfig(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/simple_default.toml") + err := cmd.Start() + c.Assert(err, checker.IsNil) + + time.Sleep(100 * time.Millisecond) + // TODO validate : run on 80 + resp, err := http.Get("http://127.0.0.1/") + + // Expected a 404 as we did not comfigure anything + c.Assert(err, checker.IsNil) + c.Assert(resp.StatusCode, checker.Equals, 404) + + killErr := cmd.Process.Kill() + c.Assert(killErr, checker.IsNil) +} diff --git a/integration/consul_test.go b/integration/consul_test.go new file mode 100644 index 000000000..f56efbc63 --- /dev/null +++ b/integration/consul_test.go @@ -0,0 +1,27 @@ +package main + +import ( + "net/http" + "os/exec" + "time" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func (s *ConsulSuite) TestSimpleConfiguration(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/consul/simple.toml") + err := cmd.Start() + c.Assert(err, checker.IsNil) + + time.Sleep(100 * time.Millisecond) + // TODO validate : run on 80 + resp, err := http.Get("http://127.0.0.1/") + + // Expected a 404 as we did not comfigure anything + c.Assert(err, checker.IsNil) + c.Assert(resp.StatusCode, checker.Equals, 404) + + killErr := cmd.Process.Kill() + c.Assert(killErr, checker.IsNil) +} diff --git a/integration/docker_test.go b/integration/docker_test.go new file mode 100644 index 000000000..8b031ff78 --- /dev/null +++ b/integration/docker_test.go @@ -0,0 +1,27 @@ +package main + +import ( + "net/http" + "os/exec" + "time" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func (s *DockerSuite) TestSimpleConfiguration(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/docker/simple.toml") + err := cmd.Start() + c.Assert(err, checker.IsNil) + + time.Sleep(100 * time.Millisecond) + // TODO validate : run on 80 + resp, err := http.Get("http://127.0.0.1/") + + // Expected a 404 as we did not comfigure anything + c.Assert(err, checker.IsNil) + c.Assert(resp.StatusCode, checker.Equals, 404) + + killErr := cmd.Process.Kill() + c.Assert(killErr, checker.IsNil) +} diff --git a/integration/file_test.go b/integration/file_test.go new file mode 100644 index 000000000..3f1ec5c13 --- /dev/null +++ b/integration/file_test.go @@ -0,0 +1,27 @@ +package main + +import ( + "net/http" + "os/exec" + "time" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func (s *FileSuite) TestSimpleConfiguration(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/file/simple.toml") + err := cmd.Start() + c.Assert(err, checker.IsNil) + + time.Sleep(100 * time.Millisecond) + // TODO validate : run on 80 + resp, err := http.Get("http://127.0.0.1/") + + // Expected a 404 as we did not comfigure anything + c.Assert(err, checker.IsNil) + c.Assert(resp.StatusCode, checker.Equals, 404) + + killErr := cmd.Process.Kill() + c.Assert(killErr, checker.IsNil) +} diff --git a/integration/fixtures/consul/simple.toml b/integration/fixtures/consul/simple.toml new file mode 100644 index 000000000..02707a085 --- /dev/null +++ b/integration/fixtures/consul/simple.toml @@ -0,0 +1,11 @@ +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" +# +# LogLevel +logLevel = "DEBUG" + +[consul] diff --git a/integration/fixtures/docker/simple.toml b/integration/fixtures/docker/simple.toml new file mode 100644 index 000000000..02f412a65 --- /dev/null +++ b/integration/fixtures/docker/simple.toml @@ -0,0 +1,16 @@ +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" +# +# LogLevel +logLevel = "DEBUG" + +[docker] + +# FIXME this should be "dynamic".. xD +endpoint = "tcp://172.17.42.1:2375" + +domain = "docker.localhost" diff --git a/integration/fixtures/file/simple.toml b/integration/fixtures/file/simple.toml new file mode 100644 index 000000000..100b58a93 --- /dev/null +++ b/integration/fixtures/file/simple.toml @@ -0,0 +1,11 @@ +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" +# +# LogLevel +logLevel = "DEBUG" + +[file] diff --git a/integration/fixtures/invalid_configuration.toml b/integration/fixtures/invalid_configuration.toml new file mode 100644 index 000000000..ed4b5b30e --- /dev/null +++ b/integration/fixtures/invalid_configuration.toml @@ -0,0 +1,3 @@ +{ + "who": ["am", "I", "?", "JSON"] +} diff --git a/integration/fixtures/marathon/simple.toml b/integration/fixtures/marathon/simple.toml new file mode 100644 index 000000000..1e97650a6 --- /dev/null +++ b/integration/fixtures/marathon/simple.toml @@ -0,0 +1,11 @@ +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" +# +# LogLevel +logLevel = "DEBUG" + +[marathon] diff --git a/integration/fixtures/simple_default.toml b/integration/fixtures/simple_default.toml new file mode 100644 index 000000000..ac7dee9f1 --- /dev/null +++ b/integration/fixtures/simple_default.toml @@ -0,0 +1,9 @@ +# Reverse proxy port +# +# Optional +# Default: ":80" +# +# port = ":80" +# +# LogLevel +logLevel = "DEBUG" diff --git a/integration/integration_test.go b/integration/integration_test.go new file mode 100644 index 000000000..888d65915 --- /dev/null +++ b/integration/integration_test.go @@ -0,0 +1,130 @@ +// This is the main file that sets up integration tests using go-check. +package main + +import ( + "fmt" + // "os" + "testing" + "time" + + "github.com/docker/libcompose/docker" + "github.com/docker/libcompose/project" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func Test(t *testing.T) { + check.TestingT(t) +} + +func init() { + check.Suite(&SimpleSuite{}) + check.Suite(&FileSuite{}) + check.Suite(&DockerSuite{}) + check.Suite(&ConsulSuite{}) + check.Suite(&MarathonSuite{}) +} + +var traefikBinary = "../dist/traefik" + +// SimpleSuite +type SimpleSuite struct{ BaseSuite } + +// File test suites +type FileSuite struct{ BaseSuite } + +func (s *FileSuite) SetUpSuite(c *check.C) { + s.createComposeProject(c, "file") + + s.composeProject.Up() +} + +// Docker test suites +type DockerSuite struct{ BaseSuite } + +func (s *DockerSuite) SetUpSuite(c *check.C) { + // Make sure we can speak to docker +} + +func (s *DockerSuite) TearDownSuite(c *check.C) { + // Clean the mess +} + +// Consul test suites (using libcompose) +type ConsulSuite struct{ BaseSuite } + +func (s *ConsulSuite) SetUpSuite(c *check.C) { + s.createComposeProject(c, "consul") +} + +// Marathon test suites (using libcompose) +type MarathonSuite struct{ BaseSuite } + +func (s *MarathonSuite) SetUpSuite(c *check.C) { + s.createComposeProject(c, "marathon") +} + +type BaseSuite struct { + composeProject *project.Project + listenChan chan project.ProjectEvent + started chan bool + stopped chan bool + deleted chan bool +} + +func (s *BaseSuite) TearDownSuite(c *check.C) { + // shutdown and delete compose project + if s.composeProject != nil { + s.composeProject.Down() + // Waiting for libcompose#55 to be merged + // <-s.stopped + time.Sleep(2 * time.Second) + + s.composeProject.Delete() + // Waiting for libcompose#55 to be merged + // <-s.deleted + time.Sleep(2 * time.Second) + } +} + +func (s *BaseSuite) createComposeProject(c *check.C, name string) { + composeProject, err := docker.NewProject(&docker.Context{ + Context: project.Context{ + ComposeFile: fmt.Sprintf("resources/compose/%s.yml", name), + ProjectName: fmt.Sprintf("integration-test-%s", name), + }, + }) + c.Assert(err, checker.IsNil) + s.composeProject = composeProject + + s.listenChan = make(chan project.ProjectEvent) + go s.startListening(c) + + composeProject.AddListener(s.listenChan) + + composeProject.Start() + + // FIXME Wait for compose to start + // Waiting for libcompose#55 to be merged + // <-s.started + time.Sleep(2 * time.Second) + +} + +func (s *BaseSuite) startListening(c *check.C) { + for event := range s.listenChan { + // FIXME Remove this when it's working (libcompose#55) + // fmt.Fprintf(os.Stdout, "Event: %s (%v)\n", event.Event, event) + // FIXME Add a timeout on event + if event.Event == project.PROJECT_UP_DONE { + s.started <- true + } + if event.Event == project.PROJECT_DOWN_DONE { + s.stopped <- true + } + if event.Event == project.PROJECT_DELETE_DONE { + s.deleted <- true + } + } +} diff --git a/integration/marathon_test.go b/integration/marathon_test.go new file mode 100644 index 000000000..0c223357d --- /dev/null +++ b/integration/marathon_test.go @@ -0,0 +1,27 @@ +package main + +import ( + "net/http" + "os/exec" + "time" + + checker "github.com/vdemeester/shakers" + check "gopkg.in/check.v1" +) + +func (s *MarathonSuite) TestSimpleConfiguration(c *check.C) { + cmd := exec.Command(traefikBinary, "fixtures/consul/simple.toml") + err := cmd.Start() + c.Assert(err, checker.IsNil) + + time.Sleep(100 * time.Millisecond) + // TODO validate : run on 80 + resp, err := http.Get("http://127.0.0.1/") + + // Expected a 404 as we did not comfigure anything + c.Assert(err, checker.IsNil) + c.Assert(resp.StatusCode, checker.Equals, 404) + + killErr := cmd.Process.Kill() + c.Assert(killErr, checker.IsNil) +} diff --git a/integration/resources/compose/consul.yml b/integration/resources/compose/consul.yml new file mode 100644 index 000000000..83f30b7a9 --- /dev/null +++ b/integration/resources/compose/consul.yml @@ -0,0 +1,21 @@ +consul: + image: progrium/consul + command: -server -bootstrap -advertise 12.0.0.254 -log-level debug -ui-dir /ui + ports: + - "8400:8400" + - "8500:8500" + - "8600:53/udp" + expose: + - "8300" + - "8301" + - "8301/udp" + - "8302" + - "8302/udp" + +registrator: + image: gliderlabs/registrator:master + command: -internal consulkv://consul:8500/traefik + volumes: + - /var/run/docker.sock:/tmp/docker.sock + links: + - consul \ No newline at end of file diff --git a/integration/resources/compose/file.yml b/integration/resources/compose/file.yml new file mode 100644 index 000000000..acd082616 --- /dev/null +++ b/integration/resources/compose/file.yml @@ -0,0 +1,20 @@ +nginx1: + image: nginx + ports: + - "8881:80" +nginx2: + image: nginx + ports: + - "8882:80" +nginx3: + image: nginx + ports: + - "8883:80" +nginx4: + image: nginx + ports: + - "8884:80" +nginx5: + image: nginx + ports: + - "8885:80" diff --git a/integration/resources/compose/marathon.yml b/integration/resources/compose/marathon.yml new file mode 100644 index 000000000..91685e963 --- /dev/null +++ b/integration/resources/compose/marathon.yml @@ -0,0 +1,42 @@ +zk: + image: bobrik/zookeeper + net: host + environment: + ZK_CONFIG: tickTime=2000,initLimit=10,syncLimit=5,maxClientCnxns=128,forceSync=no,clientPort=2181 + ZK_ID: 1 + +master: + image: mesosphere/mesos-master:0.23.0-1.0.ubuntu1404 + net: host + environment: + MESOS_ZK: zk://127.0.0.1:2181/mesos + MESOS_HOSTNAME: 127.0.0.1 + MESOS_IP: 127.0.0.1 + MESOS_QUORUM: 1 + MESOS_CLUSTER: docker-compose + MESOS_WORK_DIR: /var/lib/mesos + +slave: + image: mesosphere/mesos-slave:0.23.0-1.0.ubuntu1404 + net: host + pid: host + privileged: true + environment: + MESOS_MASTER: zk://127.0.0.1:2181/mesos + MESOS_HOSTNAME: 127.0.0.1 + MESOS_IP: 127.0.0.1 + MESOS_CONTAINERIZERS: docker,mesos + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup + - /usr/bin/docker:/usr/bin/docker:ro + - /usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro + - /var/run/docker.sock:/var/run/docker.sock + +marathon: + image: mesosphere/marathon:v0.9.2 + net: host + environment: + MARATHON_MASTER: zk://127.0.0.1:2181/mesos + MARATHON_ZK: zk://127.0.0.1:2181/marathon + MARATHON_HOSTNAME: 127.0.0.1 + command: --event_subscriber http_callback