Compare commits

..

4 Commits

Author SHA1 Message Date
f77b409a45 Merge 7784559b85 into 0e58189b97 2025-01-27 02:32:57 +00:00
7784559b85 Run migrations when installing
This throws errors, but they can be ignored.
2023-12-30 17:40:40 -08:00
4d52431c95 Check if tables exist before installing
This works better than checking just the database, because it could be
that an empty database has already been created (with e.g. Docker
Compose).

TABLES_EXIST should be empty if no tables, or will return a 1
for *each* table that exists.
2023-12-30 17:39:24 -08:00
64d2a60888 Move user create outside of database-exists check 2023-12-25 10:24:57 -08:00
7 changed files with 32 additions and 23 deletions

View File

@ -13,7 +13,7 @@ jobs:
contents: read contents: read
steps: steps:
- name: Check out the repo - name: Check out the repo
uses: actions/checkout@v5 uses: actions/checkout@v4
- name: Log in to Docker Hub - name: Log in to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v3

View File

@ -24,12 +24,12 @@ jobs:
steps: steps:
- name: "Checkout" - name: "Checkout"
uses: actions/checkout@v5 uses: actions/checkout@v4
with: with:
fetch-depth: 2 fetch-depth: 2
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v5
with: with:
python-version: 3.11 python-version: 3.11

View File

@ -1,4 +1,4 @@
ARG COMPOSER_VERSION=2.8.10 ARG COMPOSER_VERSION=2.5.8
FROM composer:$COMPOSER_VERSION as composer FROM composer:$COMPOSER_VERSION as composer
@ -7,13 +7,13 @@ FROM golang:alpine as builder
# envsubst from gettext can not replace env vars with default values # envsubst from gettext can not replace env vars with default values
# this package is not available for ARM32 and we have to build it from source code # this package is not available for ARM32 and we have to build it from source code
# flag -ldflags "-s -w" produces a smaller executable # flag -ldflags "-s -w" produces a smaller executable
RUN go install -ldflags "-s -w" -v github.com/a8m/envsubst/cmd/envsubst@v1.4.3 RUN go install -ldflags "-s -w" -v github.com/a8m/envsubst/cmd/envsubst@v1.3.0
FROM alpine:3.19 FROM alpine:3.18
COPY --from=builder /go/bin/envsubst /usr/bin/envsubst COPY --from=builder /go/bin/envsubst /usr/bin/envsubst
ARG WALLABAG_VERSION=2.6.14 ARG WALLABAG_VERSION=2.6.10
RUN set -ex \ RUN set -ex \
&& apk add --no-cache \ && apk add --no-cache \
@ -32,7 +32,6 @@ RUN set -ex \
php81-iconv \ php81-iconv \
php81-json \ php81-json \
php81-mbstring \ php81-mbstring \
php81-opcache \
php81-openssl \ php81-openssl \
php81-pecl-amqp \ php81-pecl-amqp \
php81-pecl-imagick \ php81-pecl-imagick \
@ -84,8 +83,6 @@ ENV PATH="${PATH}:/var/www/wallabag/bin"
# Set console entry path # Set console entry path
WORKDIR /var/www/wallabag WORKDIR /var/www/wallabag
HEALTHCHECK CMD curl --fail --silent --show-error --user-agent healthcheck http://localhost/api/info || exit 1
EXPOSE 80 EXPOSE 80
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]
CMD ["wallabag"] CMD ["wallabag"]

View File

@ -131,6 +131,10 @@ services:
- "80" - "80"
volumes: volumes:
- /opt/wallabag/images:/var/www/wallabag/web/assets/images - /opt/wallabag/images:/var/www/wallabag/web/assets/images
healthcheck:
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost/api/info"]
interval: 1m
timeout: 3s
depends_on: depends_on:
- db - db
- redis - redis
@ -142,7 +146,7 @@ services:
volumes: volumes:
- /opt/wallabag/data:/var/lib/mysql - /opt/wallabag/data:/var/lib/mysql
healthcheck: healthcheck:
test: ["CMD", "/usr/local/bin/healthcheck.sh", "--innodb_initialized"] test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 20s interval: 20s
timeout: 3s timeout: 3s
redis: redis:

View File

@ -74,18 +74,25 @@ provisioner() {
# Configure Postgres database # Configure Postgres database
if [ "$SYMFONY__ENV__DATABASE_DRIVER" = "pdo_pgsql" ] && [ "$POPULATE_DATABASE" = "True" ] && [ "$POSTGRES_PASSWORD" != "" ] ; then if [ "$SYMFONY__ENV__DATABASE_DRIVER" = "pdo_pgsql" ] && [ "$POPULATE_DATABASE" = "True" ] && [ "$POSTGRES_PASSWORD" != "" ] ; then
export PGPASSWORD="${POSTGRES_PASSWORD}" export PGPASSWORD="${POSTGRES_PASSWORD}"
USER_EXISTS="$(psql -qAt -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \
-c "SELECT 1 FROM pg_roles WHERE rolname = '${SYMFONY__ENV__DATABASE_USER}';")"
if [ "$USER_EXISTS" != "1" ]; then
psql -q -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \
-c "CREATE ROLE ${SYMFONY__ENV__DATABASE_USER} with PASSWORD '${SYMFONY__ENV__DATABASE_PASSWORD}' LOGIN;"
fi
DATABASE_EXISTS="$(psql -qAt -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \ DATABASE_EXISTS="$(psql -qAt -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \
-c "SELECT 1 FROM pg_catalog.pg_database WHERE datname = '${SYMFONY__ENV__DATABASE_NAME}';")" -c "SELECT 1 FROM pg_catalog.pg_database WHERE datname = '${SYMFONY__ENV__DATABASE_NAME}';")"
if [ "$DATABASE_EXISTS" != "1" ]; then if [ "$DATABASE_EXISTS" != "1" ]; then
echo "Configuring the Postgres database ..." echo "Configuring the Postgres database ..."
psql -q -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \ psql -q -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \
-c "CREATE DATABASE ${SYMFONY__ENV__DATABASE_NAME};" -c "CREATE DATABASE ${SYMFONY__ENV__DATABASE_NAME};"
USER_EXISTS="$(psql -qAt -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \ fi
-c "SELECT 1 FROM pg_roles WHERE rolname = '${SYMFONY__ENV__DATABASE_USER}';")"
if [ "$USER_EXISTS" != "1" ]; then TABLES_EXIST="$(psql -qAt -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \
psql -q -h "${SYMFONY__ENV__DATABASE_HOST}" -p "${SYMFONY__ENV__DATABASE_PORT}" -U "${POSTGRES_USER}" \ -c "SELECT 1 FROM pg_catalog.pg_tables WHERE schemaname = 'public';")"
-c "CREATE ROLE ${SYMFONY__ENV__DATABASE_USER} with PASSWORD '${SYMFONY__ENV__DATABASE_PASSWORD}' LOGIN;" if [ "$TABLES_EXIST" == "" ]; then
fi echo "Installing Wallabag ..."
exec su -c "bin/console doctrine:migrations:migrate --env=prod --no-interaction" -s /bin/sh nobody
install_wallabag install_wallabag
else else
echo "WARN: Postgres database is already configured. Remove the environment variable with root password." echo "WARN: Postgres database is already configured. Remove the environment variable with root password."

View File

@ -35,7 +35,8 @@ http {
} }
server { server {
listen [::]:80 ipv6only=off; listen 80;
listen [::0]:80;
server_name _; server_name _;
root /var/www/wallabag/web; root /var/www/wallabag/web;

View File

@ -36,11 +36,11 @@ parameters:
rss_limit: 50 rss_limit: 50
# RabbitMQ processing # RabbitMQ processing
rabbitmq_host: ${SYMFONY__ENV__RABBITMQ_HOST:-localhost} rabbitmq_host: localhost
rabbitmq_port: ${SYMFONY__ENV__RABBITMQ_PORT:-5672} rabbitmq_port: 5672
rabbitmq_user: ${SYMFONY__ENV__RABBITMQ_USER:-guest} rabbitmq_user: guest
rabbitmq_password: ${SYMFONY__ENV__RABBITMQ_PASSWORD:-guest} rabbitmq_password: guest
rabbitmq_prefetch_count: ${SYMFONY__ENV__RABBITMQ_PREFETCH_COUNT:-10} rabbitmq_prefetch_count: 10
# Redis processing # Redis processing
redis_scheme: ${SYMFONY__ENV__REDIS_SCHEME:-tcp} redis_scheme: ${SYMFONY__ENV__REDIS_SCHEME:-tcp}