From ed47d0c5d004b1ce099090100dda6dc1d963782c Mon Sep 17 00:00:00 2001 From: "Thomas Nelson Jr (arthurdent3) tn1381@att.com" Date: Thu, 8 Mar 2018 01:55:21 -0500 Subject: Docker Updates for CSIT Udates fro Docker and also a few bug fixes. Change-Id: I48d8ee81412c7ce664e6b3e33c06e952afad734e Issue-ID: MUSIC-32, MUSIC-51 Signed-off-by: Thomas Nelson Jr (arthurdent3) tn1381@att.com --- distribution/cassandra/Dockerfile | 3 +- distribution/cassandra/docker-entrypoint.sh | 17 ++++- distribution/cassandra/music_single.cql | 2 +- distribution/dockermusic/README.md | 17 +++++ .../dockermusic/properties/music.properties | 19 +++++ distribution/dockermusic/start.sh | 82 ++++++++++++++++++++++ 6 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 distribution/dockermusic/README.md create mode 100644 distribution/dockermusic/properties/music.properties create mode 100644 distribution/dockermusic/start.sh (limited to 'distribution') diff --git a/distribution/cassandra/Dockerfile b/distribution/cassandra/Dockerfile index 0e851f47..9405fcb3 100644 --- a/distribution/cassandra/Dockerfile +++ b/distribution/cassandra/Dockerfile @@ -4,5 +4,6 @@ RUN mkdir -p /docker-entrypoint-initdb.d && mkdir -p /home/cassandra/.cassandra COPY cassandra.yaml /etc/cassandra/ COPY music_single.cql /docker-entrypoint-initdb.d/ COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh -RUN chmod 755 /usr/local/bin/docker-entrypoint.sh +RUN chmod 755 /usr/local/bin/docker-entrypoint.sh && chown -R cassandra /docker-entrypoint-initdb.d + ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/distribution/cassandra/docker-entrypoint.sh b/distribution/cassandra/docker-entrypoint.sh index e46dea9f..cec4587b 100644 --- a/distribution/cassandra/docker-entrypoint.sh +++ b/distribution/cassandra/docker-entrypoint.sh @@ -60,10 +60,25 @@ if [ "$1" = 'cassandra' ]; then fi done fi + +for f in /docker-entrypoint-initdb.d/*.cql; do + if [ "${CASSUSER}" ]; then + sed -ri 's/CASSUSER/'${CASSUSER}'/' "$f" + fi + if [ "${CASSPASS}" ]; then + sed -ri 's/CASSPASS/'${CASSPASS}'/' "$f" + fi +done + + + + echo "################################ Let run Scripts ##############################" for f in /docker-entrypoint-initdb.d/*; do + case "$f" in - *.cql) echo "$0: running $f" && until cqlsh -u cassandra -p cassandra -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;; + *.cql) + echo "$0: running $f" && until cqlsh -u cassandra -p cassandra -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;; *) echo "$0: ignoring $f" ;; esac echo diff --git a/distribution/cassandra/music_single.cql b/distribution/cassandra/music_single.cql index 11eb2df0..b8a60cd1 100644 --- a/distribution/cassandra/music_single.cql +++ b/distribution/cassandra/music_single.cql @@ -16,5 +16,5 @@ CREATE TABLE IF NOT EXISTS admin.keyspace_master ( PRIMARY KEY (uuid) ); -CREATE ROLE IF NOT EXISTS nelson24 WITH PASSWORD = 'winman123' AND SUPERUSER = True AND LOGIN = True; +CREATE ROLE IF NOT EXISTS CASSUSER WITH PASSWORD = 'CASSPASS' AND SUPERUSER = True AND LOGIN = True; ALTER ROLE cassandra WITH PASSWORD = 'SomeLongRandomStringNoonewillthinkof'; diff --git a/distribution/dockermusic/README.md b/distribution/dockermusic/README.md new file mode 100644 index 00000000..436921b0 --- /dev/null +++ b/distribution/dockermusic/README.md @@ -0,0 +1,17 @@ +### Docker Setup for Single instance of MUSIC + +

Please update the properties/music.properties file to fit your env.
+Update the start.sh file.
+The beginning of the start.sh file contains various variables.

+ +CASS_IMG - Cassandra Image
+TOMCAT_IMG - Tomcat Image
+ZK_IMG - Zookeeper Image
+MUSIC_IMG - Music Image containing the MUSIC war file.
+WORK_DIR - Default to PWD.
+CASS_USERNAME - Username for Cassandra - should match cassandra.user in music.properties +file
+CASS_PASSWORD - Password for Cassandra - should match cassandra.password in music.properties.
+ +MUSIC Logs will be saved in logs/MUSIC after start of tomcat.
+ diff --git a/distribution/dockermusic/properties/music.properties b/distribution/dockermusic/properties/music.properties new file mode 100644 index 00000000..02ba435c --- /dev/null +++ b/distribution/dockermusic/properties/music.properties @@ -0,0 +1,19 @@ +my.public.ip=localhost +all.public.ips=localhost +my.id=0 +all.ids=0 +####################################### +# Optional current values are defaults +####################################### +zookeeper.host=music-zk +cassandra.host=music-db +#music.ip=localhost +#debug=true +#music.rest.ip=localhost +#lock.lease.period=6000 +cassandra.user=xxuserxxx +cassandra.password=xxpasswordxx +# AAF Endpoint if using AAF +#aaf.endpoint.url= + + diff --git a/distribution/dockermusic/start.sh b/distribution/dockermusic/start.sh new file mode 100644 index 00000000..57b05890 --- /dev/null +++ b/distribution/dockermusic/start.sh @@ -0,0 +1,82 @@ +# +# ------------------------------------------------------------------------- +# Copyright (c) 2017 AT&T Intellectual Property +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------- +# In this example we are building a docker bridge network(music-net) for all +# the containers +# Then we connect the host bridge network(bridge) to the internal network(music-net) +# +# +# +CASS_IMG=nexus3.onap.org:10001/onap/music/cassandra_music:latest +TOMCAT_IMG=nexus3.onap.org:10001/library/tomcat:8.0 +ZK_IMG=nexus3.onap.org:10001/library/zookeeper:3.4 +MUSIC_IMG=nexus3.onap.org:10001/onap/music/music:latest +WORK_DIR=${PWD} +CASS_USERNAME=cassandra1 +CASS_PASSWORD=cassandra1 + +if [ "$1" = "start" ]; then + +# Create Volume for mapping war file and tomcat +docker volume create music-vol; + +# Create a network for all the containers to run in. +docker network create music-net; + +# Start Cassandra +docker run -d --rm --name music-db --network music-net \ +-p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" \ +-e CASSNAME=${CASS_USERNAME} \ +-e CASSPASS=${CASS_PASSWORD} \ +${CASS_IMG}; + +# Start Music war +docker run -d --rm --name music-war \ +-v music-vol:/app \ +${MUSIC_IMG}; + +# Start Zookeeper +docker run -d --rm --name music-zk --network music-net +-p "2181:2181" -p "2888:2888" -p "3888:3888" \ +${ZK_IMG}; + +# Delay for Cassandra +sleep 20; + +# Start Up tomcat - Needs to have properties,logs dir and war file volume mapped. +docker run -d --rm --name music-tomcat --network music-net -p "8080:8080" \ +-v music-vol:/usr/local/tomcat/webapps \ +-v ${WORK_DIR}/properties:/opt/app/music/etc:ro \ +-v ${WORK_DIR}/logs:/opt/app/music/logs \ +${TOMCAT_IMG}; + +# Connect tomcat to host bridge network so that its port can be seen. +docker network connect bridge music-tomcat; + +fi + + +# Shutdown and clean up. +if [ "$1" = "stop" ]; then +docker stop music-war; +docker stop music-db; +docker stop music-zk; +docker stop music-tomcat; +docker network rm music-net; +sleep 5; +docker volume rm music-vol; +fi -- cgit 1.2.3-korg