diff --git a/samples/data.yml b/samples/data.yml index 2ecb61a92..61794b073 100644 --- a/samples/data.yml +++ b/samples/data.yml @@ -9,8 +9,10 @@ templates: # any extra arguments for Docker? # docker_args: +# TODO: SOME_SECRET to a password for the discourse user params: db_default_text_search_config: "pg_catalog.english" + db_password: SOME_SECRET ## Set db_shared_buffers to a max of 25% of the total memory. ## will be set automatically by bootstrap based on detected RAM, or you can override @@ -24,6 +26,7 @@ env: LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LANGUAGE: en_US.UTF-8 + DISCOURSE_DB_PASSWORD: $db_password volumes: - volume: @@ -33,12 +36,11 @@ volumes: host: /var/discourse/shared/data/log/var-log guest: /var/log -# TODO: SOME_SECRET to a password for the discourse user hooks: after_postgres: - exec: stdin: | - alter user discourse with password 'SOME_SECRET'; + alter user discourse with password '$db_password'; cmd: su - postgres -c 'psql discourse' raise_on_fail: false diff --git a/templates/postgres.15.template.yml b/templates/postgres.15.template.yml index 548c575eb..b0beef6cb 100644 --- a/templates/postgres.15.template.yml +++ b/templates/postgres.15.template.yml @@ -14,22 +14,38 @@ hooks: - replace: filename: /etc/service/unicorn/run from: "# postgres" - to: | - if [ -f /root/install_postgres ]; then - /root/install_postgres - rm /root/install_postgres - fi - sv start postgres || exit 1 + to: sv start postgres || exit 1 run: - exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-13 postgresql-client-13 postgresql-contrib-13 postgresql-13-pgvector - exec: apt-get update && apt-get install -y postgresql-15 postgresql-client-15 postgresql-contrib-15 postgresql-15-pgvector + + - file: + path: /etc/service/config-postgres/run + chmod: "+x" + contents: | + #!/bin/sh + if [ -f /usr/local/bin/create_db ] && [ "$CREATE_DB_ON_BOOT" = "1" ]; then + sleep 5 + /usr/local/bin/create_db + if [ ! -z "$DISCOURSE_DB_PASSWORD" ]; then + echo "alter user discourse with password '$DISCOURSE_DB_PASSWORD';" | su - postgres -c 'psql $db_name' + fi + fi + - file: path: /etc/service/postgres/run chmod: "+x" contents: | #!/bin/sh exec 2>&1 + if [ -f /root/install_postgres ]; then + /root/install_postgres + rm /root/install_postgres + fi + if [ "$CREATE_DB_ON_BOOT" = "1" ]; then + sv once config-postgres + fi HOME=/var/lib/postgresql USER=postgres exec thpoff chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main - file: diff --git a/templates/postgres.template.yml b/templates/postgres.template.yml index 95001a0f1..df3b556ee 100644 --- a/templates/postgres.template.yml +++ b/templates/postgres.template.yml @@ -14,20 +14,35 @@ hooks: - replace: filename: /etc/service/unicorn/run from: "# postgres" - to: | - if [ -f /root/install_postgres ]; then - /root/install_postgres - rm /root/install_postgres - fi - sv start postgres || exit 1 + to: sv start postgres || exit 1 run: + - file: + path: /etc/service/config-postgres/run + chmod: "+x" + contents: | + #!/bin/sh + if [ -f /usr/local/bin/create_db ] && [ "$CREATE_DB_ON_BOOT" = "1" ]; then + sleep 5 + /usr/local/bin/create_db + if [ ! -z "$DISCOURSE_DB_PASSWORD" ]; then + echo "alter user discourse with password '$DISCOURSE_DB_PASSWORD';" | su - postgres -c 'psql $db_name' + fi + fi + - file: path: /etc/service/postgres/run chmod: "+x" contents: | #!/bin/sh exec 2>&1 + if [ -f /root/install_postgres ]; then + /root/install_postgres + rm /root/install_postgres + fi + if [ "$CREATE_DB_ON_BOOT" = "1" ]; then + sv once config-postgres + fi HOME=/var/lib/postgresql USER=postgres exec thpoff chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main - file: diff --git a/templates/redis.template.yml b/templates/redis.template.yml index 9044869ee..a09b767a1 100644 --- a/templates/redis.template.yml +++ b/templates/redis.template.yml @@ -8,6 +8,9 @@ run: contents: | #!/bin/sh exec 2>&1 + if [ ! -d /shared/redis_data ]; then + install -d -m 0755 -o redis -g redis /shared/redis_data + fi exec thpoff chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf - file: path: /etc/service/redis/log/run @@ -86,8 +89,4 @@ hooks: - replace: filename: /etc/service/unicorn/run from: "# redis" - to: | - if [ ! -d /shared/redis_data ]; then - install -d -m 0755 -o redis -g redis /shared/redis_data - fi - sv start redis || exit 1 + to: sv start redis || exit 1 diff --git a/templates/web.template.yml b/templates/web.template.yml index d5dd09526..b9987f5a3 100644 --- a/templates/web.template.yml +++ b/templates/web.template.yml @@ -60,9 +60,8 @@ run: if [[ -z "$PRECOMPILE_ON_BOOT" ]]; then PRECOMPILE_ON_BOOT=1 fi - if [ -f /usr/local/bin/create_db ] && [ "$CREATE_DB_ON_BOOT" = "1" ]; then /usr/local/bin/create_db; fi; - if [ "$MIGRATE_ON_BOOT" = "1" ]; then su discourse -c 'bundle exec rake db:migrate'; fi - if [ "$PRECOMPILE_ON_BOOT" = "1" ]; then SKIP_EMBER_CLI_COMPILE=1 su discourse -c 'bundle exec rake assets:precompile'; fi + if [ "$MIGRATE_ON_BOOT" = "1" ]; then su discourse -c 'bundle exec rake db:migrate' || exit 1; fi + if [ "$PRECOMPILE_ON_BOOT" = "1" ]; then SKIP_EMBER_CLI_COMPILE=1 su discourse -c 'bundle exec rake assets:precompile' || exit 1; fi LD_PRELOAD=$RUBY_ALLOCATOR HOME=/home/discourse USER=discourse exec thpoff chpst -u discourse:www-data -U discourse:www-data bundle exec config/unicorn_launcher -E production -c config/unicorn.conf.rb - file: