Skip to content

Commit

Permalink
Merge branch 'release/0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
blitzstern5 committed Feb 13, 2019
2 parents f627d1d + 378f3d3 commit 684b0b7
Show file tree
Hide file tree
Showing 11 changed files with 157 additions and 87 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## Version 0.8.0 / 2019-Feb-13 03:07
* Upgrade backend to version 1.2.4
* Upgrade applications to version v1.3.0
* Upgrade scripts to v0.2.1
* Upgrade Block Explorer version v0.3.2

## Version 0.7.2 / 2018-Dec-26 19:26
* Upgrade mac docker to version Community Edition 2.0.0.0-mac81 2018-12-07
* Upgrade backend to version 1.1.10
Expand Down
8 changes: 8 additions & 0 deletions CONTENT.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# Version 0.8.0

* [Backend v1.2.4](https://github.com/AplaProject/go-apla/releases/tag/1.2.4)
* [Frontend v0.11.1](https://github.com/GenesisKernel/genesis-front/releases/tag/v0.11.1)
* [Applications v1.3.0](https://github.com/AplaProject/apps/releases/tag/v1.3.0)
* [Block Explorer v0.3.2](https://github.com/GenesisKernel/blockexplorer/releases/tag/v0.3.2)
* [Scripts v0.2.1](https://github.com/blitzstern5/genesis-scripts/releases/tag/v0.2.1)

# Version 0.7.2

* [Backend v1.1.10](https://github.com/AplaProject/go-apla/releases/tag/1.1.10)
Expand Down
30 changes: 17 additions & 13 deletions genesis-be/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,26 @@ FROM debian:stretch-slim

ENV GOPATH /go
ENV PATH /go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV GOLANG_VER 1.11
ENV BACKEND_GO_URL github.com/GenesisKernel/go-genesis
ENV BACKEND_BRANCH 1.0.4
ENV BE_BIN_BASENAME go-genesis
ENV GOLANG_VER 1.11.5
ENV NODEJS_SETUP_SCRIPT_URL https://deb.nodesource.com/setup_10.x
ENV BACKEND_GO_URL github.com/AplaProject/go-apla
ENV BACKEND_BRANCH 1.2.4
ENV BE_BIN_BASENAME go-apla
ENV FRONTEND_REPO_URL https://github.com/GenesisKernel/genesis-front
ENV FRONTEND_BRANCH v0.11.1
ENV SCRIPTS_REPO_URL https://github.com/blitzstern5/genesis-scripts
ENV SCRIPTS_BRANCH develop
ENV DEMO_APPS_URL https://raw.githubusercontent.com/GenesisKernel/apps/master/system.json
ENV SCRIPTS_BRANCH v0.2.1
ENV DEMO_APPS_URL https://github.com/GenesisKernel/apps/releases/download/v1.3.0/system.json

RUN apt-get update -y && \
apt-get install -y sudo supervisor curl git gnupg2 postgresql-client-9.6 \
build-essential && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN set -ex; apt-get update -y && \
mkdir -p /usr/share/man/man1 && mkdir -p /usr/share/man/man7 && \
apt-get install -y --no-install-recommends sudo supervisor curl git gnupg2 \
postgresql-client-9.6 build-essential ca-certificates && apt-get clean; \
(rm -rf /var/lib/apt/lists/*; :)

RUN curl -L -o /go$GOLANG_VER.linux-amd64.tar.gz https://dl.google.com/go/go$GOLANG_VER.linux-amd64.tar.gz && tar xvf /go$GOLANG_VER.linux-amd64.tar.gz && mv /go /usr/local/ && find /go$GOLANG_VER.linux-amd64.tar.gz -delete
RUN curl -L -o go$GOLANG_VER.linux-amd64.tar.gz https://dl.google.com/go/go$GOLANG_VER.linux-amd64.tar.gz && tar -C /usr/local -xzf go$GOLANG_VER.linux-amd64.tar.gz && rm go$GOLANG_VER.linux-amd64.tar.gz

RUN go get -d $BACKEND_GO_URL && cd /go/src/$BACKEND_GO_URL && git checkout $BACKEND_BRANCH && go get $BACKEND_GO_URL && mkdir -p /genesis-back/bin && git rev-parse --abbrev-ref HEAD > /genesis-back/bin/go-genesis.git_branch && git rev-parse HEAD > /genesis-back/bin/go-genesis.git_commit && mkdir -p /genesis-back/data/node1 && mv $GOPATH/bin/go-genesis /genesis-back/bin/go-genesis && rm -rf /go
RUN go get -d $BACKEND_GO_URL && cd /go/src/$BACKEND_GO_URL && git checkout $BACKEND_BRANCH && go get $BACKEND_GO_URL && mkdir -p /genesis-back/bin && git rev-parse --abbrev-ref HEAD > /genesis-back/bin/$BE_BIN_BASENAME.git_branch && git rev-parse HEAD > /genesis-back/bin/$BE_BIN_BASENAME.git_commit && mkdir -p /genesis-back/data/node1 && mv $GOPATH/bin/$BE_BIN_BASENAME /genesis-back/bin/$BE_BIN_BASENAME && rm -rf /go

RUN mkdir /genesis-apps && \
echo -n "$DEMO_APPS_URL" > /genesis-apps/demo_apps.url
Expand All @@ -26,7 +30,7 @@ ADD $DEMO_APPS_URL /genesis-apps/demo_apps.json
RUN git clone -b $SCRIPTS_BRANCH $SCRIPTS_REPO_URL /genesis-scripts
COPY scripts.config.sh /genesis-scripts/.env

RUN apt-get update -y && apt-get install -y --no-install-recommends python3 python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
RUN apt-get update -y && apt-get install -y --no-install-recommends python3 python3-pip && apt-get clean; (rm -rf /var/lib/apt/lists/*; :)
RUN pip3 install -U pip
RUN pip3 install setuptools wheel
RUN pip3 install -r /genesis-scripts/requirements.txt
Expand Down
2 changes: 1 addition & 1 deletion genesis-be/genesis-scripts
10 changes: 5 additions & 5 deletions genesis-bf/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@ FROM debian:stretch-slim

ENV GOPATH /go
ENV PATH /go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV GOLANG_VER 1.11.4
ENV GOLANG_VER 1.11.5
ENV NODEJS_SETUP_SCRIPT_URL https://deb.nodesource.com/setup_10.x
ENV BACKEND_GO_URL github.com/AplaProject/go-apla
ENV BACKEND_BRANCH 1.1.10
ENV BACKEND_BRANCH 1.2.4
ENV BE_BIN_BASENAME go-apla
ENV FRONTEND_REPO_URL https://github.com/GenesisKernel/genesis-front
ENV FRONTEND_BRANCH v0.11.1
ENV SCRIPTS_REPO_URL https://github.com/blitzstern5/genesis-scripts
ENV SCRIPTS_BRANCH v0.2.0
ENV DEMO_APPS_URL https://github.com/GenesisKernel/apps/releases/download/v1.2.0/system.json
ENV SCRIPTS_BRANCH v0.2.1
ENV DEMO_APPS_URL https://github.com/GenesisKernel/apps/releases/download/v1.3.0/system.json

RUN set -ex; apt-get update -y && \
mkdir -p /usr/share/man/man1 && mkdir -p /usr/share/man/man7 && \
apt-get install -y --no-install-recommends sudo supervisor curl git gnupg2 \
postgresql-client-9.6 build-essential ca-certificates && apt-get clean; \
(rm -rf /var/lib/apt/lists/*; :)

RUN curl -L -o /go$GOLANG_VER.linux-amd64.tar.gz https://dl.google.com/go/go$GOLANG_VER.linux-amd64.tar.gz && tar xvf /go$GOLANG_VER.linux-amd64.tar.gz && mv /go /usr/local/ && find /go$GOLANG_VER.linux-amd64.tar.gz -delete
RUN curl -L -o go$GOLANG_VER.linux-amd64.tar.gz https://dl.google.com/go/go$GOLANG_VER.linux-amd64.tar.gz && tar -C /usr/local -xzf go$GOLANG_VER.linux-amd64.tar.gz && rm go$GOLANG_VER.linux-amd64.tar.gz

RUN go get -d $BACKEND_GO_URL && cd /go/src/$BACKEND_GO_URL && git checkout $BACKEND_BRANCH && go get $BACKEND_GO_URL && mkdir -p /genesis-back/bin && git rev-parse --abbrev-ref HEAD > /genesis-back/bin/$BE_BIN_BASENAME.git_branch && git rev-parse HEAD > /genesis-back/bin/$BE_BIN_BASENAME.git_commit && mkdir -p /genesis-back/data/node1 && mv $GOPATH/bin/$BE_BIN_BASENAME /genesis-back/bin/$BE_BIN_BASENAME && rm -rf /go

Expand Down
2 changes: 1 addition & 1 deletion genesis-bf/genesis-scripts
4 changes: 2 additions & 2 deletions genesis-blex/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM debian:stretch-slim

ENV BLEX_REPO_URL https://github.com/GenesisKernel/blockexplorer
ENV BLEX_BRANCH v0.3.0
ENV BLEX_BRANCH v0.3.2
ENV SCRIPTS_REPO_URL https://github.com/blitzstern5/genesis-scripts
ENV SCRIPTS_BRANCH v0.2.0
ENV SCRIPTS_BRANCH v0.2.1

RUN set -ex; apt-get update -y && \
mkdir -p /usr/share/man/man1 && mkdir -p /usr/share/man/man7 && \
Expand Down
2 changes: 1 addition & 1 deletion genesis-blex/genesis-scripts
15 changes: 9 additions & 6 deletions genesis-db/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RUN set -eux; \
chown -R postgres:postgres /var/lib/postgresql

# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.10
ENV GOSU_VERSION 1.11
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
Expand Down Expand Up @@ -71,7 +71,7 @@ RUN set -ex; \
apt-key list

ENV PG_MAJOR 11
ENV PG_VERSION 11.1-1.pgdg90+1
ENV PG_VERSION 11.1-3.pgdg90+1

RUN set -ex; \
\
Expand Down Expand Up @@ -153,10 +153,13 @@ RUN set -ex; \
find /usr -name '*.pyc' -type f -exec bash -c 'for pyc; do dpkg -S "$pyc" &> /dev/null || rm -vf "$pyc"; done' -- '{}' +

# make the sample config easier to munge (and "correct by default")
RUN mv -v "/usr/share/postgresql/$PG_MAJOR/postgresql.conf.sample" /usr/share/postgresql/ \
&& ln -sv ../postgresql.conf.sample "/usr/share/postgresql/$PG_MAJOR/" \
&& sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/share/postgresql/postgresql.conf.sample \
&& sed -ri "s!^#?(max_connections)\s*=\s*\S+.*!\1 = 300!" /usr/share/postgresql/postgresql.conf.sample
RUN set -eux; \
dpkg-divert --add --rename --divert "/usr/share/postgresql/postgresql.conf.sample.dpkg" "/usr/share/postgresql/$PG_MAJOR/postgresql.conf.sample"; \
cp -v /usr/share/postgresql/postgresql.conf.sample.dpkg /usr/share/postgresql/postgresql.conf.sample; \
ln -sv ../postgresql.conf.sample "/usr/share/postgresql/$PG_MAJOR/"; \
sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/share/postgresql/postgresql.conf.sample; \
sed -ri "s!^#?(max_connections)\s*=\s*\S+.*!\1 = 300!" /usr/share/postgresql/postgresql.conf.sample; \
grep -F "listen_addresses = '*'" /usr/share/postgresql/postgresql.conf.sample

RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql

Expand Down
127 changes: 90 additions & 37 deletions genesis-db/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/bin/bash
set -e
#!/usr/bin/env bash
set -Eeo pipefail
# TODO swap to -Eeuo pipefail above (after handling all potentially-unset variables)

# usage: file_env VAR [DEFAULT]
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
Expand Down Expand Up @@ -27,26 +28,75 @@ if [ "${1:0:1}" = '-' ]; then
set -- postgres "$@"
fi

if [ "$1" = 'postgres' ]; then
# allow the container to be started with `--user`
if [ "$1" = 'postgres' ] && [ "$(id -u)" = '0' ]; then
mkdir -p "$PGDATA"
chmod 700 "$PGDATA"
chown -R postgres "$PGDATA"
chmod 700 "$PGDATA"

mkdir -p /run/postgresql
chmod g+s /run/postgresql
chown -R postgres /run/postgresql
mkdir -p /var/run/postgresql
chown -R postgres /var/run/postgresql
chmod 775 /var/run/postgresql

# Create the transaction log directory before initdb is run (below) so the directory is owned by the correct user
if [ "$POSTGRES_INITDB_WALDIR" ]; then
mkdir -p "$POSTGRES_INITDB_WALDIR"
chown -R postgres "$POSTGRES_INITDB_WALDIR"
chmod 700 "$POSTGRES_INITDB_WALDIR"
fi

exec gosu postgres "$BASH_SOURCE" "$@"
fi

if [ "$1" = 'postgres' ]; then
mkdir -p "$PGDATA"
chown -R "$(id -u)" "$PGDATA" 2>/dev/null || :
chmod 700 "$PGDATA" 2>/dev/null || :

# look specifically for PG_VERSION, as it is expected in the DB dir
if [ ! -s "$PGDATA/PG_VERSION" ]; then
# "initdb" is particular about the current user existing in "/etc/passwd", so we use "nss_wrapper" to fake that if necessary
# see https://github.com/docker-library/postgres/pull/253, https://github.com/docker-library/postgres/issues/359, https://cwrap.org/nss_wrapper.html
if ! getent passwd "$(id -u)" &> /dev/null && [ -e /usr/lib/libnss_wrapper.so ]; then
export LD_PRELOAD='/usr/lib/libnss_wrapper.so'
export NSS_WRAPPER_PASSWD="$(mktemp)"
export NSS_WRAPPER_GROUP="$(mktemp)"
echo "postgres:x:$(id -u):$(id -g):PostgreSQL:$PGDATA:/bin/false" > "$NSS_WRAPPER_PASSWD"
echo "postgres:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
fi

file_env 'POSTGRES_USER' 'postgres'
file_env 'POSTGRES_PASSWORD'

file_env 'POSTGRES_INITDB_ARGS'
eval "gosu postgres initdb $POSTGRES_INITDB_ARGS"
if [ "$POSTGRES_INITDB_WALDIR" ]; then
export POSTGRES_INITDB_ARGS="$POSTGRES_INITDB_ARGS --waldir $POSTGRES_INITDB_WALDIR"
fi
eval 'initdb --username="$POSTGRES_USER" --pwfile=<(echo "$POSTGRES_PASSWORD") '"$POSTGRES_INITDB_ARGS"

# unset/cleanup "nss_wrapper" bits
if [ "${LD_PRELOAD:-}" = '/usr/lib/libnss_wrapper.so' ]; then
rm -f "$NSS_WRAPPER_PASSWD" "$NSS_WRAPPER_GROUP"
unset LD_PRELOAD NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP
fi

# check password first so we can output the warning before postgres
# messes it up
file_env 'POSTGRES_PASSWORD'
if [ "$POSTGRES_PASSWORD" ]; then
pass="PASSWORD '$POSTGRES_PASSWORD'"
if [ -n "$POSTGRES_PASSWORD" ]; then
authMethod=md5

if [ "${#POSTGRES_PASSWORD}" -ge 100 ]; then
cat >&2 <<-'EOWARN'
WARNING: The supplied POSTGRES_PASSWORD is 100+ characters.
This will not work if used via PGPASSWORD with "psql".
https://www.postgresql.org/message-id/flat/E1Rqxp2-0004Qt-PL%40wrigleys.postgresql.org (BUG #6412)
https://github.com/docker-library/postgres/issues/507
EOWARN
fi
else
# The - option suppresses leading tabs but *not* spaces. :)
cat >&2 <<-'EOWARN'
Expand All @@ -57,67 +107,70 @@ if [ "$1" = 'postgres' ]; then
Docker's default configuration, this is
effectively any other container on the same
system.
Use "-e POSTGRES_PASSWORD=password" to set
it in "docker run".
****************************************************
EOWARN

pass=
authMethod=trust
fi

{ echo; echo "host all all all $authMethod"; } | gosu postgres tee -a "$PGDATA/pg_hba.conf" > /dev/null
{
echo
echo "host all all all $authMethod"
} >> "$PGDATA/pg_hba.conf"

# internal start of server in order to allow set-up using psql-client
# internal start of server in order to allow set-up using psql-client
# does not listen on external TCP/IP and waits until start finishes
gosu postgres pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
PGUSER="${PGUSER:-$POSTGRES_USER}" \
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses=''" \
-w start

file_env 'POSTGRES_USER' 'postgres'
file_env 'POSTGRES_DB' "$POSTGRES_USER"

psql=( psql -v ON_ERROR_STOP=1 )
export PGPASSWORD="${PGPASSWORD:-$POSTGRES_PASSWORD}"
psql=( psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --no-password )

if [ "$POSTGRES_DB" != 'postgres' ]; then
"${psql[@]}" --username postgres <<-EOSQL
CREATE DATABASE "$POSTGRES_DB" ;
"${psql[@]}" --dbname postgres --set db="$POSTGRES_DB" <<-'EOSQL'
CREATE DATABASE :"db" ;
EOSQL
echo
fi

if [ "$POSTGRES_USER" = 'postgres' ]; then
op='ALTER'
else
op='CREATE'
fi
"${psql[@]}" --username postgres <<-EOSQL
$op USER "$POSTGRES_USER" WITH SUPERUSER $pass ;
EOSQL
echo

psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )
psql+=( --dbname "$POSTGRES_DB" )

echo
for f in /docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.sh)
# https://github.com/docker-library/postgres/issues/450#issuecomment-393167936
# https://github.com/docker-library/postgres/pull/452
if [ -x "$f" ]; then
echo "$0: running $f"
"$f"
else
echo "$0: sourcing $f"
. "$f"
fi
;;
*.sql) echo "$0: running $f"; "${psql[@]}" -f "$f"; echo ;;
*.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${psql[@]}"; echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done

gosu postgres pg_ctl -D "$PGDATA" -m fast -w stop
PGUSER="${PGUSER:-$POSTGRES_USER}" \
pg_ctl -D "$PGDATA" -m fast -w stop

unset PGPASSWORD

echo
echo 'PostgreSQL init process complete; ready for start up.'
echo
fi

exec gosu postgres "$@"
fi

exec "$@"

Loading

0 comments on commit 684b0b7

Please sign in to comment.