From 553c1f697c07a41b8acc035f72ce6aad06961e92 Mon Sep 17 00:00:00 2001 From: Pradyumna Kaushik Date: Fri, 25 Oct 2019 02:22:49 -0400 Subject: [PATCH] Added docker-compose.yaml file. The following services are run. 1. zookeeper - docker image rdelvalle/zookeeper 2. mesos-master - docker image rdelvalle/mesos-master:1.5.1 3. mesos-agent - docker image pkaushi1/mesos-agent-elektron:1.5.1. This container was created using rdelvalle/mesos:1.5.1 as the base layer. Performance Co-Pilot is installed in the agent to allow for logging of metrics. 4. elektron - docker image pkaushi1/elektron:v1. This container has environment to run elektron. Performance Co-Pilot is installed. Note that the current directory is mounted into the container to facilitate testing changes without the need to commit. By default, the following command-line options are used when running elektron. 1 -w -> workload 2. -m -> mesos master location 3. -p -> log directory prefix Any other command-line options can be specified using the 'command' element in the docker-compose yaml file. These will be appended to the entrypoint command when running elektron. Important Note -------------- Prior to running 'docker-compose up' build the elektron executable using the command 'go build -o '. That way, the executable is available within the container as the present working directory is mounted. --- docker-compose.yaml | 104 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..7ccf361 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,104 @@ +# Copyright (C) 2018 spdf +# +# This file is part of Elektron. +# +# Elektron is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Elektron is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Elektron. If not, see . +# + +version: "2" + +services: + zk: + image: rdelvalle/zookeeper + restart: on-failure + ports: + - "2181:2181" + environment: + ZK_CONFIG: tickTime=2000,initLimit=10,syncLimit=5,maxClientCnxns=128,forceSync=no,clientPort=2181 + ZK_ID: 1 + networks: + elektron-cluster: + ipv4_address: 19.16.4.3 + logging: + driver: none + + mesos-master: + image: rdelvalle/mesos-master:1.5.1 + restart: on-failure + ports: + - "5050:5050" + environment: + MESOS_ZK: zk://19.16.4.3:2181/mesos + MESOS_QUORUM: 1 + MESOS_HOSTNAME: localhost + MESOS_CLUSTER: test-cluster + MESOS_REGISTRY: replicated_log + MESOS_WORK_DIR: /tmp/mesos + networks: + elektron-cluster: + ipv4_address: 19.16.4.4 + logging: + driver: none + depends_on: + - zk + + mesos-agent: + image: pkaushi1/mesos-agent-elektron:1.5.1 + pid: host + restart: on-failure + ports: + - "5051:5051" + environment: + MESOS_MASTER: zk://19.16.4.3:2181/mesos + MESOS_CONTAINERIZERS: mesos,docker + MESOS_ISOLATION: cgroups/cpu + MESOS_PORT: 5051 + MESOS_HOSTNAME: localhost + MESOS_RESOURCES: ports(*):[11000-11999] + MESOS_SYSTEMD_ENABLE_SUPPORT: 'false' + MESOS_WORK_DIR: /tmp/mesos + networks: + elektron-cluster: + ipv4_address: 19.16.4.5 + logging: + driver: none + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup + - /var/run/docker.sock:/var/run/docker.sock + depends_on: + - mesos-master + + elektron: + image: pkaushi1/elektron:v1 + restart: on-failure + environment: + ELEKTRON_EXECUTABLE_NAME: elektron + ELEKTRON_WORKLOAD: workload_sample.json + ELEKTRON_MESOS_MASTER_LOCATION: 19.16.4.4:5050 + ELEKTRON_LOGDIR_PREFIX: elektron-test-run + networks: + elektron-cluster: + ipv4_address: 19.16.4.6 + volumes: + - ${PWD}:/elektron + depends_on: + - mesos-agent + +networks: + elektron-cluster: + ipam: + config: + - subnet: 19.16.4.0/16 + gateway: 19.16.4.1 +