This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push:
new e6fff74 ATLAS-4011: Dockerfile: updated to support storing data
(solr, berkeleydb, kafka) on host directory
e6fff74 is described below
commit e6fff74807c24a06aea1cb7666bd07da9d1100ed
Author: Jayendra Parab <[email protected]>
AuthorDate: Tue Nov 3 00:00:26 2020 +0530
ATLAS-4011: Dockerfile: updated to support storing data (solr, berkeleydb,
kafka) on host directory
---
dev-support/atlas-docker/Dockerfile.atlas | 4 ++++
dev-support/atlas-docker/README.md | 4 ++--
dev-support/atlas-docker/data/.gitignore | 1 +
dev-support/atlas-docker/docker-compose.atlas.yml | 2 ++
dev-support/atlas-docker/scripts/atlas.sh | 4 +++-
distro/src/bin/atlas_config.py | 28 +++++++++++++++++++++--
distro/src/bin/atlas_start.py | 2 +-
distro/src/bin/atlas_stop.py | 2 +-
distro/src/test/python/scripts/TestMetadata.py | 2 +-
9 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/dev-support/atlas-docker/Dockerfile.atlas
b/dev-support/atlas-docker/Dockerfile.atlas
index e2dea77..76e5c59 100644
--- a/dev-support/atlas-docker/Dockerfile.atlas
+++ b/dev-support/atlas-docker/Dockerfile.atlas
@@ -26,8 +26,12 @@ RUN tar xfz /tmp/apache-atlas-${ATLAS_VERSION}-bin.tar.gz
--directory=/opt/ && \
rm -f /tmp/apache-atlas-${ATLAS_VERSION}-bin.tar.gz && \
mkdir -p /var/run/atlas && \
mkdir -p /var/log/atlas && \
+ mkdir -p /home/atlas/data && \
rm -rf ${ATLAS_HOME}/logs && \
ln -s /var/log/atlas ${ATLAS_HOME}/logs && \
+ ln -s /home/atlas/data ${ATLAS_HOME}/data && \
chown -R atlas:atlas ${ATLAS_HOME}/ /var/run/atlas/ /var/log/atlas/
+VOLUME /home/atlas/data
+
ENTRYPOINT [ "/home/atlas/scripts/atlas.sh" ]
diff --git a/dev-support/atlas-docker/README.md
b/dev-support/atlas-docker/README.md
index de64447..37caa3a 100644
--- a/dev-support/atlas-docker/README.md
+++ b/dev-support/atlas-docker/README.md
@@ -67,9 +67,9 @@ Docker files in this folder create docker images and run them
to build Apache At
This might take about 10 minutes to complete.
- 5.8. Execute following command to install and run Atlas services in a
container:
+ 5.5. Execute following command to install and run Atlas services in a
container:
- docker run -it -d --name atlas --hostname atlas.example.com -p
21000:21000 atlas
+ docker run -it -d --name atlas --hostname atlas.example.com -p
21000:21000 -v $(pwd)/data:/home/atlas/data atlas
This might take few minutes to complete.
diff --git a/dev-support/atlas-docker/data/.gitignore
b/dev-support/atlas-docker/data/.gitignore
new file mode 100644
index 0000000..72e8ffc
--- /dev/null
+++ b/dev-support/atlas-docker/data/.gitignore
@@ -0,0 +1 @@
+*
diff --git a/dev-support/atlas-docker/docker-compose.atlas.yml
b/dev-support/atlas-docker/docker-compose.atlas.yml
index 92bd1ed..cfaf0d7 100644
--- a/dev-support/atlas-docker/docker-compose.atlas.yml
+++ b/dev-support/atlas-docker/docker-compose.atlas.yml
@@ -13,6 +13,8 @@ services:
tty: true
networks:
- atlas
+ volumes:
+ - ./data:/home/atlas/data
ports:
- "21000:21000"
depends_on:
diff --git a/dev-support/atlas-docker/scripts/atlas.sh
b/dev-support/atlas-docker/scripts/atlas.sh
index 0c4a454..7abb6f7 100755
--- a/dev-support/atlas-docker/scripts/atlas.sh
+++ b/dev-support/atlas-docker/scripts/atlas.sh
@@ -16,6 +16,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+set -x
if [ ! -e ${ATLAS_HOME}/.setupDone ]
then
@@ -36,6 +37,7 @@ then
fi
su -c "cd ${ATLAS_HOME}/bin && ./atlas_start.py" atlas
+ATLAS_PID=`ps -ef | grep -v grep | grep -i "org.apache.atlas.Atlas" | awk
'{print $2}'`
# prevent the container from exiting
-/bin/bash
+tail --pid=$ATLAS_PID -f /dev/null
diff --git a/distro/src/bin/atlas_config.py b/distro/src/bin/atlas_config.py
index bda8e2a..7aa8196 100755
--- a/distro/src/bin/atlas_config.py
+++ b/distro/src/bin/atlas_config.py
@@ -50,7 +50,9 @@ MANAGE_EMBEDDED_CASSANDRA = "MANAGE_EMBEDDED_CASSANDRA"
MANAGE_LOCAL_ELASTICSEARCH = "MANAGE_LOCAL_ELASTICSEARCH"
SOLR_BIN = "SOLR_BIN"
SOLR_CONF = "SOLR_CONF"
+SOLR_HOME = "SOLR_HOME"
SOLR_PORT = "SOLR_PORT"
+SOLR_DIR = "SOLR_DIR"
DEFAULT_SOLR_PORT = "9838"
SOLR_SHARDS = "SOLR_SHARDS"
DEFAULT_SOLR_SHARDS = "1"
@@ -59,7 +61,7 @@ DEFAULT_SOLR_REPLICATION_FACTOR = "1"
ENV_KEYS = ["JAVA_HOME", ATLAS_OPTS, ATLAS_SERVER_OPTS, ATLAS_SERVER_HEAP,
ATLAS_LOG, ATLAS_PID, ATLAS_CONF,
"ATLASCPPATH", ATLAS_DATA, ATLAS_HOME, ATLAS_WEBAPP,
HBASE_CONF_DIR, SOLR_PORT, MANAGE_LOCAL_HBASE,
- MANAGE_LOCAL_SOLR, MANAGE_EMBEDDED_CASSANDRA,
MANAGE_LOCAL_ELASTICSEARCH]
+ MANAGE_LOCAL_SOLR, MANAGE_EMBEDDED_CASSANDRA,
MANAGE_LOCAL_ELASTICSEARCH, SOLR_HOME, SOLR_DIR]
IS_WINDOWS = platform.system() == "Windows"
ON_POSIX = 'posix' in sys.builtin_module_names
CONF_FILE="atlas-application.properties"
@@ -107,12 +109,21 @@ def hbaseConfDir(dir):
def zookeeperBinDir(dir):
return os.environ.get(SOLR_BIN, os.path.join(dir, "zk", BIN))
+def solrDir():
+ return os.environ.get(SOLR_DIR, os.path.join(atlasDir(), "solr"))
+
+def solrServerDir():
+ return os.path.join(solrDir(), "server")
+
def solrBinDir(dir):
return os.environ.get(SOLR_BIN, os.path.join(dir, "solr", BIN))
def elasticsearchBinDir(dir):
return os.environ.get(SOLR_BIN, os.path.join(dir, "elasticsearch", BIN))
+def solrHomeDir(dir):
+ return os.environ.get(SOLR_HOME, os.path.join(dir, "data", "solr"))
+
def solrConfDir(dir):
return os.environ.get(SOLR_CONF, os.path.join(dir, "solr",
CONFIG_SETS_CONF))
@@ -565,7 +576,7 @@ def start_elasticsearch(dir, logdir = None, wait=True):
sleep(6)
return processVal
-def run_solr(dir, action, zk_url = None, port = None, logdir = None,
wait=True):
+def run_solr(dir, action, zk_url = None, port = None, logdir = None,
wait=True, homedir = None):
solrScript = "solr"
@@ -583,6 +594,19 @@ def run_solr(dir, action, zk_url = None, port = None,
logdir = None, wait=True):
else:
cmd = [os.path.join(dir, solrScript), action, '-z', zk_url, '-p',
port]
+ if homedir is not None:
+ if not os.path.exists(homedir) :
+ os.makedirs(homedir)
+ #Copy solr.xml from installation directory to the solr home directory
+ srcSolrXmlPath = os.path.join(solrServerDir(), "solr", "solr.xml")
+ destSolrXmlPath = os.path.join(homedir, "solr.xml")
+ if not os.path.exists(destSolrXmlPath) :
+ print "solr.xml doesn't exist in " + homedir + ", copying from " +
srcSolrXmlPath
+ copyCmd = ["cp", srcSolrXmlPath, homedir]
+ runProcess(copyCmd, logdir, False, True)
+ cmd.append('-s')
+ cmd.append(homedir)
+
return runProcess(cmd, logdir, False, wait)
def create_solr_collection(dir, confdir, index, logdir = None, wait=True):
diff --git a/distro/src/bin/atlas_start.py b/distro/src/bin/atlas_start.py
index 54fd2bd..46e21ca 100755
--- a/distro/src/bin/atlas_start.py
+++ b/distro/src/bin/atlas_start.py
@@ -128,7 +128,7 @@ def main():
mc.run_zookeeper(mc.zookeeperBinDir(atlas_home), "start", logdir)
print "zookeeper started."
- mc.run_solr(mc.solrBinDir(atlas_home), "start",
mc.get_solr_zk_url(confdir), mc.solrPort(), logdir)
+ mc.run_solr(mc.solrBinDir(atlas_home), "start",
mc.get_solr_zk_url(confdir), mc.solrPort(), logdir, True,
mc.solrHomeDir(atlas_home))
print "solr started."
print "setting up solr collections..."
diff --git a/distro/src/bin/atlas_stop.py b/distro/src/bin/atlas_stop.py
index 400a7d2..6f5293e 100755
--- a/distro/src/bin/atlas_stop.py
+++ b/distro/src/bin/atlas_stop.py
@@ -68,7 +68,7 @@ def main():
# stop solr
if mc.is_solr_local(confdir):
- mc.run_solr(mc.solrBinDir(atlas_home), "stop", None, mc.solrPort(),
None, True)
+ mc.run_solr(mc.solrBinDir(atlas_home), "stop", None, mc.solrPort(),
None, True, mc.solrHomeDir(atlas_home))
if mc.is_zookeeper_local(confdir):
mc.run_zookeeper(mc.zookeeperBinDir(atlas_home), "stop")
diff --git a/distro/src/test/python/scripts/TestMetadata.py
b/distro/src/test/python/scripts/TestMetadata.py
index f1235f7..251de93 100644
--- a/distro/src/test/python/scripts/TestMetadata.py
+++ b/distro/src/test/python/scripts/TestMetadata.py
@@ -106,7 +106,7 @@ class TestMetadata(unittest.TestCase):
calls = [
call(['atlas_home/hbase/bin/hbase-daemon.sh', '--config',
'atlas_home/hbase/conf', 'start', 'master'],
'atlas_home/logs', False, True),
- call(['atlas_home/solr/bin/solr', 'start', '-z',
'localhost:9838', '-p', '9838'], 'atlas_home/logs',
+ call(['atlas_home/solr/bin/solr', 'start', '-z',
'localhost:9838', '-p', '9838', '-s', 'atlas_home/data/solr'],
'atlas_home/logs',
False, True),
call(['atlas_home/solr/bin/solr', 'create', '-c',
'vertex_index', '-d',
'atlas_home/solr/server/solr/configsets/_default/conf',
'-shards', '1', '-replicationFactor',