Compare commits

..

4 Commits

Author SHA1 Message Date
a2ed3534e1 Merge branch 'master' into docker-secrets 2025-04-24 18:57:28 -04:00
dfc3a38db1 Early exit if can't read file 2021-01-21 11:14:22 -05:00
1b9008040e Test docker secrets 2021-01-21 11:14:17 -05:00
36b8864ca3 Add docker secret support 2021-01-20 11:27:29 -05:00
11 changed files with 62 additions and 14 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

@ -21,15 +21,16 @@ jobs:
- "sqlite" - "sqlite"
- "mariadb" - "mariadb"
- "postgresql" - "postgresql"
- "postgresql-secret"
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.12
RUN set -ex \ RUN set -ex \
&& apk add --no-cache \ && apk add --no-cache \

View File

@ -43,6 +43,8 @@ Default login is `wallabag:wallabag`.
- `-e SYMFONY__ENV__SERVER_NAME=...` (defaults to "Your wallabag instance". Specifies a user-friendly name for the 2FA issuer) - `-e SYMFONY__ENV__SERVER_NAME=...` (defaults to "Your wallabag instance". Specifies a user-friendly name for the 2FA issuer)
- `-e PHP_MEMORY_LIMIT=...` (allows you to change the PHP `memory_limit` value. defaults to 128M, and should be a number and unit, eg. 512K, 128M, 2G, or a number of bytes) - `-e PHP_MEMORY_LIMIT=...` (allows you to change the PHP `memory_limit` value. defaults to 128M, and should be a number and unit, eg. 512K, 128M, 2G, or a number of bytes)
To set any of these environment variables from a file (for instance a Docker Secret), append `__FILE` to the name of the environment variable.
## SQLite ## SQLite
The easiest way to start wallabag is to use the SQLite backend. You can spin that up with The easiest way to start wallabag is to use the SQLite backend. You can spin that up with
@ -142,7 +144,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

@ -2,6 +2,16 @@
# Exit when any command fails # Exit when any command fails
set -e set -e
FILE_ENV_VARS="$(env | grep '__FILE=')"
for env_var in $FILE_ENV_VARS; do
var_name="$(echo $env_var | grep -o '.*__FILE=' | sed 's/__FILE=//g')"
file_path="$(echo $env_var | grep -o '__FILE=.*' | sed 's/__FILE=//g')"
file_content="$(cat $file_path)"
[[ ! $? -eq 0 ]] && exit 1 # Exit if last command failed
new_var="$(echo $var_name=$file_content)"
export $(echo $new_var | xargs)
done
COMMAND_ARG1="$1" COMMAND_ARG1="$1"
COMMAND_ARG2="$2" COMMAND_ARG2="$2"

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}

View File

@ -0,0 +1 @@
wallapass

View File

@ -0,0 +1 @@
F00B4R

View File

@ -0,0 +1 @@
my-secret-pw

View File

@ -0,0 +1,31 @@
version: '2'
services:
wallabag:
build:
context: ../
image: wallabag:postgresql
container_name: wallabag
environment:
- POSTGRES_PASSWORD__FILE=/run/secrets/postgres_password
- POSTGRES_USER=my-super-user
- SYMFONY__ENV__SECRET__FILE=/run/secrets/env_secret
- SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql
- SYMFONY__ENV__DATABASE_HOST=db
- SYMFONY__ENV__DATABASE_PORT=5432
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=wallabag
- SYMFONY__ENV__DATABASE_PASSWORD__FILE=/run/secrets/db_password
ports:
- "127.0.0.1:80:80"
# Docker Secrets require Swarm Mode, so we use volumes instead to spoof the behaviour
volumes:
- ./credentials/db_password:/run/secrets/db_password
- ./credentials/postgres_password:/run/secrets/postgres_password
- ./credentials/env_secret:/run/secrets/env_secret
db:
image: postgres:10.3
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
- POSTGRES_USER=my-super-user
volumes:
- ./credentials/postgres_password:/run/secrets/postgres_password