Browse Source

start tb-cassandra with 'thingsboard' user (with postgresql server)

pull/2759/head
viktor 6 years ago
parent
commit
7c3eee66db
  1. 30
      msa/tb/docker-cassandra/Dockerfile
  2. 11
      msa/tb/docker-cassandra/start-db.sh
  3. 4
      msa/tb/docker-cassandra/stop-db.sh

30
msa/tb/docker-cassandra/Dockerfile

@ -22,15 +22,13 @@ RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' | tee
RUN curl -L https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN echo 'deb http://www.apache.org/dist/cassandra/debian 311x main' | tee --append /etc/apt/sources.list.d/cassandra.list > /dev/null
RUN curl -L https://www.apache.org/dist/cassandra/KEYS | apt-key add -
ENV PG_MAJOR=11
RUN apt-get update
RUN apt-get install -y cassandra cassandra-tools postgresql-11
RUN update-rc.d cassandra disable
RUN update-rc.d postgresql disable
RUN sed -i.old '/ulimit/d' /etc/init.d/cassandra
RUN mkdir -p /var/log/postgres
RUN chown -R postgres:postgres /var/log/postgres
COPY logback.xml ${pkg.name}.conf start-db.sh stop-db.sh start-tb.sh upgrade-tb.sh install-tb.sh ${pkg.name}.deb /tmp/
RUN chmod a+x /tmp/*.sh \
@ -58,26 +56,38 @@ ENV CASSANDRA_DATA=/data/cassandra
ENV SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
ENV SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
ENV SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
ENV SPRING_DATASOURCE_USERNAME=postgres
ENV SPRING_DATASOURCE_USERNAME=${pkg.user}
ENV SPRING_DATASOURCE_PASSWORD=postgres
ENV CASSANDRA_HOST=localhost
ENV CASSANDRA_PORT=9042
ENV CASSANDRA_HOME=/opt/cassandra
ENV PATH $CASSANDRA_HOME/bin:$PATH
RUN rm -rf /var/lib/cassandra
ENV PATH=$CASSANDRA_HOME/bin:$PATH
ENV PATH=$PATH:/usr/lib/postgresql/$PG_MAJOR/bin
ENV PGLOG=/var/log/postgres
ENV CASSANDRA_LOG=/var/log/cassandra
# postgres config
RUN mkdir -p $PGLOG
RUN chown -R ${pkg.user}:${pkg.user} $PGLOG
RUN chown -R ${pkg.user}:${pkg.user} /var/log/postgresql
RUN chown -R ${pkg.user}:${pkg.user} /var/run/postgresql
# cassandra config
RUN rm -rf /var/lib/cassandra
RUN chmod a+w /var/lib
RUN chown -R ${pkg.user}:${pkg.user} $CASSANDRA_LOG
RUN mkdir -p $DATA_FOLDER
RUN chown -R cassandra:cassandra /data
RUN chown -R ${pkg.user}:${pkg.user} $DATA_FOLDER
RUN chown -R ${pkg.user}:${pkg.user} /var/log/${pkg.name}
RUN chown -R cassandra:cassandra /var/log/${pkg.name}
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
USER cassandra
USER ${pkg.user}
EXPOSE 9090
EXPOSE 1883

11
msa/tb/docker-cassandra/start-db.sh

@ -17,18 +17,17 @@
firstlaunch=${DATA_FOLDER}/.firstlaunch
export PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
if [ ! -d ${PGDATA} ]; then
mkdir -p ${PGDATA}
chown -R postgres:postgres ${PGDATA}
su postgres -c '${PG_CTL} initdb -U postgres'
${PG_CTL} initdb
fi
su postgres -c '${PG_CTL} -l /var/log/postgres/postgres.log -w start'
exec setsid nohup postgres >> ${PGLOG}/postgres.log 2>&1 &
if [ ! -f ${firstlaunch} ]; then
su postgres -c 'psql -U postgres -d postgres -c "CREATE DATABASE thingsboard"'
psql -U ${pkg.user} -d postgres -c "CREATE DATABASE thingsboard"
fi
cassandra_data_dir=${CASSANDRA_DATA}
@ -41,7 +40,7 @@ if [ ! -L ${cassandra_data_link} ]; then
ln -s ${cassandra_data_dir} ${cassandra_data_link}
fi
service cassandra start
exec setsid nohup cassandra >> ${CASSANDRA_LOG}/cassandra.log 2>&1 &
until nmap $CASSANDRA_HOST -p $CASSANDRA_PORT | grep "$CASSANDRA_PORT/tcp open"
do

4
msa/tb/docker-cassandra/stop-db.sh

@ -20,6 +20,10 @@ CASSANDRA_PID=$(ps aux | grep '[c]assandra' | awk '{print $2}')
echo "Stopping cassandra (pid ${CASSANDRA_PID})."
kill -SIGTERM ${CASSANDRA_PID}
PG_CTL=$(find /usr/lib/postgresql/ -name pg_ctl)
echo "Stopping postgres."
${PG_CTL} stop
while [ -e /proc/${CASSANDRA_PID} ]
do
echo "Waiting for cassandra to stop."

Loading…
Cancel
Save