diff --git a/Dockerfile b/Dockerfile index 7c3cea9..6beaea7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM centos:centos7 ENV GPDBVER=6.16.2 \ - DATADIR=/data + DATADIR=/data \ + DATABASE=exampledb COPY install.sh /tmp/install.sh COPY entrypoint.sh /entrypoint.sh diff --git a/build.cmd b/build.cmd index 56a6cfc..4dd474e 100644 --- a/build.cmd +++ b/build.cmd @@ -1,2 +1,2 @@ docker build --progress=plain -t 76527413/greenplum:6.16.2 . -docker push 76527413/greenplum:6.16.2 \ No newline at end of file +#docker push 76527413/greenplum:6.16.2 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 0874b74..1e40cd6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,10 +3,11 @@ services: dev: image: 76527413/greenplum:6.16.2 build: . + hostname: greenplum_singlenode + environment: + - DATABASE=example ports: - 5432:5432 volumes: - ./data:/data - ./log:/home/gpadmin/gpAdminLogs - - ./entrypoint.sh:/entrypoint.sh - command: bash -c "/entrypoint.sh" \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh index 0cf563b..2c40aa4 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,17 +1,20 @@ #!/bin/bash /var/run/sshd/sshd_start.sh && sleep 5s -if [ "$(ls -A $DATADIR)" = "" ]; then - - mkdir -p $DATADIR/master - mkdir -p $DATADIR/primary - chown -R gpadmin:gpadmin $DATADIR - +source /home/gpadmin/.bashrc +if [ ! $MASTER_DATA_DIRECTORY ]; then su - gpadmin -l -c "echo -e 'source /usr/local/greenplum-db/greenplum_path.sh' >> ~/.bashrc" su - gpadmin -l -c "echo -e 'export MASTER_DATA_DIRECTORY=$DATADIR/master/gpseg-1/' >> ~/.bashrc" su - gpadmin -l -c "echo -e 'export PGPORT=5432' >> ~/.bashrc" su - gpadmin -l -c "echo -e 'export PGUSER=gpadmin' >> ~/.bashrc" su - gpadmin -l -c "echo -e 'export PGDATABASE=postgres' >> ~/.bashrc" +fi + +if [ "$(ls -A $DATADIR)" = "" ]; then + + mkdir -p $DATADIR/master + mkdir -p $DATADIR/primary + chown -R gpadmin:gpadmin $DATADIR su - gpadmin -l -c "source ~/.bashrc;gpinitsystem -a --ignore-warnings -c /home/gpadmin/gpinitsystem_config_singlenode -h /home/gpadmin/gp_hosts_list" su - gpadmin -l -c "source ~/.bashrc;psql -d postgres -U gpadmin -f /home/gpadmin/initdb_gpdb.sql" @@ -19,15 +22,8 @@ if [ "$(ls -A $DATADIR)" = "" ]; then su - gpadmin -l -c "source ~/.bashrc;gpconfig -c gp_enable_global_deadlock_detector -v on" su - gpadmin -l -c "echo \"host all all 0.0.0.0/0 password\" >> $DATADIR/master/gpseg-1/pg_hba.conf" - su - gpadmin -l -c "source ~/.bashrc && sleep 5s && gpstop -u && tail -f gpAdminLogs/*.log" -else - # su - gpadmin -l -c "echo -e 'source /usr/local/greenplum-db/greenplum_path.sh' >> ~/.bashrc" - # su - gpadmin -l -c "echo -e 'export MASTER_DATA_DIRECTORY=$DATADIR/master/gpseg-1/' >> ~/.bashrc" - # su - gpadmin -l -c "echo -e 'export PGPORT=5432' >> ~/.bashrc" - # su - gpadmin -l -c "echo -e 'export PGUSER=gpadmin' >> ~/.bashrc" - # su - gpadmin -l -c "echo -e 'export PGDATABASE=postgres' >> ~/.bashrc" - - #su - gpadmin -l -c "source ~/.bashrc && gpstart -a && tail -f gpAdminLogs/*.log" + su - gpadmin -l -c "source ~/.bashrc && sleep 5s && gpstop -u && createdb ${DATABASE} && tail -f gpAdminLogs/*.log" - su - gpadmin -l -c "source ~/.bashrc && source /usr/local/greenplum-db/greenplum_path.sh && gpstart -a && tail -f gpAdminLogs/*.log" +else + su - gpadmin -l -c "source ~/.bashrc && gpstart -a && tail -f gpAdminLogs/*.log" fi diff --git a/install.sh b/install.sh index 47c970e..f9885d6 100644 --- a/install.sh +++ b/install.sh @@ -7,8 +7,8 @@ ERROR_MSG="[ERROR] " INFO_MSG="[INFO] " function log() { - TIME=$(date +"%Y-%m-%d %H:%M:%S") - echo "$TIME $1" + TIME=$(date +"%Y-%m-%d %H:%M:%S") + echo "$TIME $1" } function package_install() { @@ -29,35 +29,35 @@ function package_check_ok() { fi } -function gpdb_install(){ - log "$INFO_MSG Start to install greenplum for single node." +function gpdb_install() { + log "$INFO_MSG Start to install greenplum for single node." - package=(epel-release wget) - for p in ${package[@]}; do - package_install $p - done + package=(epel-release wget) + for p in ${package[@]}; do + package_install $p + done - /usr/sbin/groupadd gpadmin - /usr/sbin/useradd gpadmin -g gpadmin - usermod -G gpadmin gpadmin - echo "${PASSWORD}" | passwd --stdin gpadmin + /usr/sbin/groupadd gpadmin + /usr/sbin/useradd gpadmin -g gpadmin + usermod -G gpadmin gpadmin + echo "${PASSWORD}" | passwd --stdin gpadmin - sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config - sed -i -r 's/^.*StrictHostKeyChecking\s+\w+/StrictHostKeyChecking no/' /etc/ssh/ssh_config - sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd - systemctl restart sshd + sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config + sed -i -r 's/^.*StrictHostKeyChecking\s+\w+/StrictHostKeyChecking no/' /etc/ssh/ssh_config + sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd + systemctl restart sshd - su gpadmin -l -c "ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P \"\"" - su gpadmin -l -c "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys" - su gpadmin -l -c "chmod 600 ~/.ssh/authorized_keys" && \ + su gpadmin -l -c "ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P \"\"" + su gpadmin -l -c "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys" + su gpadmin -l -c "chmod 600 ~/.ssh/authorized_keys" && su gpadmin -l -c "ssh-keyscan -H localhost 2>/dev/null | grep rsa | awk '{print \"localhost \" \$2 \" \" \$3 }' >> ~/.ssh/known_hosts" - #wget "https://github.com.cnpmjs.org/greenplum-db/gpdb/releases/download/$GPDBVER/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" - yum install -y "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" - rm -rf "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" + #wget "https://github.com.cnpmjs.org/greenplum-db/gpdb/releases/download/$GPDBVER/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" + yum install -y "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" + rm -rf "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" - rm -f /home/gpadmin/gpinitsystem_config_singlenode - cat > /home/gpadmin/gpinitsystem_config_singlenode << EOF + rm -f /home/gpadmin/gpinitsystem_config_singlenode + cat >/home/gpadmin/gpinitsystem_config_singlenode < /home/gpadmin/gp_hosts_list << EOF + cat >/home/gpadmin/gp_hosts_list < /home/gpadmin/initdb_gpdb.sql << EOF + cat >/home/gpadmin/initdb_gpdb.sql <