mirror of
https://github.com/wallabag/docker
synced 2025-12-13 09:46:27 +00:00
Compare commits
170 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b5fe1a934 | ||
|
|
9d44149e4d | ||
|
|
2b99017b25 | ||
|
|
a85e592e6e | ||
|
|
f4a8e5eadc | ||
|
|
f460f40b8c | ||
|
|
58c3977a3c | ||
|
|
aede9b9c98 | ||
|
|
749587fb4f | ||
|
|
6839862b04 | ||
|
|
f4f8bac984 | ||
|
|
a04e494755 | ||
|
|
bd6e2b174e | ||
|
|
e7ebbc69da | ||
|
|
c5df063ccb | ||
|
|
d619c63e43 | ||
|
|
7e43f2acfa | ||
|
|
f02adb2504 | ||
|
|
0e7fa2bca7 | ||
|
|
1f1dd12cc3 | ||
|
|
b291bf697e | ||
|
|
511a2595bc | ||
|
|
6962f33ed7 | ||
|
|
836f9871ef | ||
|
|
d02c1a404a | ||
|
|
b8ab40b6b4 | ||
|
|
2cd061f08d | ||
|
|
1693adc27c | ||
|
|
a444f0db9d | ||
|
|
b98d38cbed | ||
|
|
6c548be161 | ||
|
|
174fa565eb | ||
|
|
45989b38de | ||
|
|
af075af5d8 | ||
|
|
51a60408e1 | ||
|
|
bea6b2fcc6 | ||
|
|
e189338065 | ||
|
|
8595085d6b | ||
|
|
503114fcba | ||
|
|
88bf8bb86d | ||
|
|
58a4d10cc5 | ||
|
|
501c4a08c6 | ||
|
|
710cc43af4 | ||
|
|
b2afa8eff4 | ||
|
|
a01e124295 | ||
|
|
4abeb0db73 | ||
|
|
ca1dd1d464 | ||
|
|
c58b7b4af2 | ||
|
|
4dcaf994ab | ||
|
|
8737b7115e | ||
|
|
dd280bd5cf | ||
|
|
e292a1c0c2 | ||
|
|
7cce137040 | ||
|
|
ad326dcfe3 | ||
|
|
71dd17939c | ||
|
|
66c3967ef5 | ||
|
|
6d7fdd92c8 | ||
|
|
f9f5b5c68c | ||
|
|
386924f2cc | ||
|
|
3d3f11fb85 | ||
|
|
25bf47149f | ||
|
|
0cee0470de | ||
|
|
b626873351 | ||
|
|
e741136827 | ||
|
|
b92f4c2740 | ||
|
|
040655c3c4 | ||
|
|
5f78ae9a21 | ||
|
|
e510f9db1b | ||
|
|
926e8c7445 | ||
|
|
7d7b1a846f | ||
|
|
8fd1421d36 | ||
|
|
f86d945624 | ||
|
|
a37317f55f | ||
|
|
47dc65b84e | ||
|
|
64fc68eb56 | ||
|
|
213d23691c | ||
|
|
eeead4ff44 | ||
|
|
16a1a1236a | ||
|
|
2460f55662 | ||
|
|
0fe76aa896 | ||
|
|
0f52136d3d | ||
|
|
de684f5a44 | ||
|
|
bf0316bac6 | ||
|
|
ae7aefe8e4 | ||
|
|
ef910d313c | ||
|
|
51e3b625c0 | ||
|
|
dcaa684897 | ||
|
|
6edcd745c4 | ||
|
|
7a476cdab0 | ||
|
|
6a7bbbb8d0 | ||
|
|
e5456115c1 | ||
|
|
7b68684720 | ||
|
|
b67e80a9f8 | ||
|
|
434b17cd8f | ||
|
|
5123e9de38 | ||
|
|
5682aefa74 | ||
|
|
bf82658342 | ||
|
|
abb0647cbd | ||
|
|
6f22d1ef68 | ||
|
|
d1c050662b | ||
|
|
038a5ea6c7 | ||
|
|
c42058bf0f | ||
|
|
3e4cd35253 | ||
|
|
8c15693e12 | ||
|
|
f6e4816eb5 | ||
|
|
bff2dd3d8b | ||
|
|
90265c1653 | ||
|
|
fb020c3be6 | ||
|
|
80a3379a76 | ||
|
|
5203ab63b1 | ||
|
|
65b2e2c7a9 | ||
|
|
4de27027b9 | ||
|
|
924d663c86 | ||
|
|
ec8f599298 | ||
|
|
125aad2c1c | ||
|
|
606b7d681c | ||
|
|
fdaaf37381 | ||
|
|
2b13ed0703 | ||
|
|
e41a237604 | ||
|
|
724d6492bc | ||
|
|
267618a519 | ||
|
|
0fe227a0cc | ||
|
|
d42d34cdac | ||
|
|
58cc845c75 | ||
|
|
c553787564 | ||
|
|
73187d7ce1 | ||
|
|
f7bd58c73a | ||
|
|
ba8f6ec5d3 | ||
|
|
68db53e09c | ||
|
|
530e59329a | ||
|
|
2ae7dee8af | ||
|
|
c2052c2681 | ||
|
|
310d55bdea | ||
|
|
76f5ecb61e | ||
|
|
92f5db7ba9 | ||
|
|
ee4a7e4a46 | ||
|
|
e0bc4e895d | ||
|
|
ed6b4437b8 | ||
|
|
af2fb30389 | ||
|
|
af6c68a312 | ||
|
|
1f4d9af316 | ||
|
|
6a5ab7c126 | ||
|
|
f66d2aeab0 | ||
|
|
0d2bf2999a | ||
|
|
8bd298316a | ||
|
|
d9f9efcf13 | ||
|
|
cccc5fb91e | ||
|
|
79ae48bfac | ||
|
|
d0691598b6 | ||
|
|
28b4b03b21 | ||
|
|
c65be008ec | ||
|
|
63ee463365 | ||
|
|
efbcf75701 | ||
|
|
b4b1469215 | ||
|
|
4a81bc45db | ||
|
|
107beb115c | ||
|
|
67030c1c36 | ||
|
|
255fe53dfc | ||
|
|
4094d3c9ff | ||
|
|
93651c95f5 | ||
|
|
97783ac312 | ||
|
|
b165d3c14f | ||
|
|
8ce69e0d48 | ||
|
|
3c96d9d6d9 | ||
|
|
fdffa0f9ec | ||
|
|
6a67881572 | ||
|
|
038bef09cd | ||
|
|
26b75eee75 | ||
|
|
025c51422e | ||
|
|
5f6a948f98 |
14
.github/dependabot.yml
vendored
Normal file
14
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: docker
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
time: "04:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 10
|
||||
ignore:
|
||||
- dependency-name: alpine
|
||||
versions:
|
||||
- ">= 3.11.a"
|
||||
- "< 3.12"
|
||||
54
.github/workflows/test.yml
vendored
Normal file
54
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
name: "CI"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- "master"
|
||||
push:
|
||||
branches:
|
||||
- "master"
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: "Testing with database: ${{ matrix.database }}"
|
||||
runs-on: "ubuntu-latest"
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
database:
|
||||
- "default"
|
||||
- "sqlite"
|
||||
- "mariadb"
|
||||
- "postgresql"
|
||||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: "actions/checkout@v2"
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.5
|
||||
|
||||
- name: "Build image"
|
||||
run: docker-compose -f tests/docker-compose.${{ matrix.database }}.yml build
|
||||
|
||||
- name: "Run image"
|
||||
run: docker-compose -f tests/docker-compose.${{ matrix.database }}.yml up -d
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: |
|
||||
pip install pytest
|
||||
pip install requests
|
||||
|
||||
- name: "Check running instance"
|
||||
run: docker ps
|
||||
|
||||
- name: "Wait 60s"
|
||||
run: sleep 60
|
||||
|
||||
- name: "Run tests"
|
||||
run: py.test tests/
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.cache
|
||||
__pycache__/*
|
||||
*.pyc
|
||||
101
Dockerfile
101
Dockerfile
@@ -1,65 +1,72 @@
|
||||
FROM alpine:edge
|
||||
MAINTAINER Marvin Steadfast <marvin@xsteadfastx.org>
|
||||
FROM alpine:3.12
|
||||
|
||||
ENV WALLABAG_VERSION=2.0.3 \
|
||||
SYMFONY__ENV__DATABASE_DRIVER=pdo_sqlite \
|
||||
SYMFONY__ENV__DATABASE_HOST=127.0.0.1 \
|
||||
SYMFONY__ENV__DATABASE_PORT=~ \
|
||||
SYMFONY__ENV__DATABASE_NAME=symfony \
|
||||
SYMFONY__ENV__DATABASE_USER=root \
|
||||
SYMFONY__ENV__DATABASE_PASSWORD=~ \
|
||||
SYMFONY__ENV__SECRET=ovmpmAWXRCabNlMgzlzFXDYmCFfzGv
|
||||
LABEL maintainer "Marvin Steadfast <marvin@xsteadfastx.org>"
|
||||
|
||||
RUN echo "@testing http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
|
||||
&& apk add --update \
|
||||
ARG WALLABAG_VERSION=2.4.1
|
||||
|
||||
RUN apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted
|
||||
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
|
||||
|
||||
RUN set -ex \
|
||||
&& apk update \
|
||||
&& apk upgrade --available \
|
||||
&& apk add \
|
||||
ansible \
|
||||
curl \
|
||||
git \
|
||||
libwebp@testing \
|
||||
libwebp \
|
||||
mariadb-client \
|
||||
nginx \
|
||||
pcre \
|
||||
php7 \
|
||||
php7-ctype@testing \
|
||||
php7-curl@testing \
|
||||
php7-dom@testing \
|
||||
php7-fpm@testing \
|
||||
php7-gd@testing \
|
||||
php7-gettext@testing \
|
||||
php7-iconv@testing \
|
||||
php7-json@testing \
|
||||
php7-mbstring@testing \
|
||||
php7-openssl@testing \
|
||||
php7-pdo_mysql@testing \
|
||||
php7-pdo_pgsql@testing \
|
||||
php7-pdo_sqlite@testing \
|
||||
php7-phar@testing \
|
||||
php7-session@testing \
|
||||
php7-xml@testing \
|
||||
php7@testing\
|
||||
py-mysqldb \
|
||||
py-psycopg2 \
|
||||
php7-amqp \
|
||||
php7-bcmath \
|
||||
php7-ctype \
|
||||
php7-curl \
|
||||
php7-dom \
|
||||
php7-fpm \
|
||||
php7-gd \
|
||||
php7-gettext \
|
||||
php7-iconv \
|
||||
php7-json \
|
||||
php7-mbstring \
|
||||
php7-openssl \
|
||||
php7-pdo_mysql \
|
||||
php7-pdo_pgsql \
|
||||
php7-pdo_sqlite \
|
||||
php7-phar \
|
||||
php7-session \
|
||||
php7-simplexml \
|
||||
php7-tokenizer \
|
||||
php7-xml \
|
||||
php7-zlib \
|
||||
php7-sockets \
|
||||
php7-xmlreader \
|
||||
php7-tidy \
|
||||
php7-intl \
|
||||
py3-mysqlclient \
|
||||
py3-psycopg2 \
|
||||
py-simplejson \
|
||||
rabbitmq-c \
|
||||
s6 \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
RUN ln -s /usr/bin/php7 /usr/bin/php \
|
||||
tar \
|
||||
tzdata \
|
||||
make \
|
||||
bash \
|
||||
&& rm -rf /var/cache/apk/* \
|
||||
&& ln -sf /dev/stdout /var/log/nginx/access.log \
|
||||
&& ln -sf /dev/stderr /var/log/nginx/error.log
|
||||
|
||||
RUN curl -s http://getcomposer.org/installer | php \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
RUN git clone --branch $WALLABAG_VERSION --depth 1 https://github.com/wallabag/wallabag.git /var/www/wallabag
|
||||
&& ln -sf /dev/stderr /var/log/nginx/error.log \
|
||||
&& curl -s https://getcomposer.org/installer | php \
|
||||
&& mv composer.phar /usr/local/bin/composer \
|
||||
&& composer selfupdate --1 \
|
||||
&& git clone --branch $WALLABAG_VERSION --depth 1 https://github.com/wallabag/wallabag.git /var/www/wallabag
|
||||
|
||||
COPY root /
|
||||
|
||||
RUN cd /var/www/wallabag \
|
||||
&& SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
|
||||
|
||||
RUN chown -R nobody:nobody /var/www/wallabag
|
||||
|
||||
RUN chmod +x /entrypoint.sh
|
||||
RUN set -ex \
|
||||
&& cd /var/www/wallabag \
|
||||
&& SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist --no-progress \
|
||||
&& chown -R nobody:nobody /var/www/wallabag
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
106
README.md
106
README.md
@@ -1,5 +1,9 @@
|
||||
# What is wallabag?
|
||||
|
||||

|
||||
[](https://hub.docker.com/r/wallabag/wallabag/)
|
||||
[](https://hub.docker.com/r/wallabag/wallabag/)
|
||||
|
||||
[wallabag](https://www.wallabag.org/) is a self hostable application for saving web pages. Unlike other services, wallabag is free (as in freedom) and open source.
|
||||
|
||||
With this application you will not miss content anymore. Click, save, read it when you want. It saves the content you select so that you can read it when you have time.
|
||||
@@ -11,45 +15,94 @@ Default login is `wallabag:wallabag`.
|
||||
## Environment variables
|
||||
|
||||
- `-e MYSQL_ROOT_PASSWORD=...` (needed for the mariadb container to initialise and for the entrypoint in the wallabag container to create a database and user if its not there)
|
||||
- `-e POSTGRES_PASSWORD=...` (needed for the posgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
|
||||
- `-e POSTGRES_PASSWORD=...` (needed for the postgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
|
||||
- `-e POSTGRES_USER=...` (needed for the posgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
|
||||
- `-e SYMFONY__ENV__DATABASE_DRIVER=...` (defaults to "pdo_sqlite", this sets the database driver to use)
|
||||
- `-e SYMFONY__ENV__DATABASE_HOST=...` (defaults to "127.0.0.1", if use mysql this should be the name of the mariadb container)
|
||||
- `-e SYMFONY__ENV__DATABASE_PORT=...` (port of the database host)
|
||||
- `-e SYMFONY__ENV__DATABASE_NAME=...`(defaults to "symfony", this is the name of the database to use)
|
||||
- `-e SYMFONY__ENV__DATABASE_USER=...` (defaults to "root", this is the name of the database user to use)
|
||||
- `-e SYMFONY__ENV__DATABASE_PASSWORD=...` (defaults to "~", this is the password of the database user to use)
|
||||
- `-e SYMFONY__ENV__DATABASE_CHARSET=...` (defaults to utf8, this is the database charset to use)
|
||||
- `-e SYMFONY__ENV__SECRET=...` (defaults to "ovmpmAWXRCabNlMgzlzFXDYmCFfzGv")
|
||||
- `-e SYMFONY__ENV__LOCALE=...` (default to en)
|
||||
- `-e SYMFONY__ENV__MAILER_HOST=...` (defaults to "127.0.0.1", the SMTP host)
|
||||
- `-e SYMFONY__ENV__MAILER_USER=...` (defaults to "~", the SMTP user)
|
||||
- `-e SYMFONY__ENV__MAILER_PASSWORD=...`(defaults to "~", the SMTP password)
|
||||
- `-e SYMFONY__ENV__FROM_EMAIL=...`(defaults to "`wallabag@example.com`", the address wallabag uses for outgoing emails)
|
||||
- `-e SYMFONY__ENV__TWOFACTOR_AUTH=...` (defaults to "true", enable or disable two-factor authentication)
|
||||
- `-e SYMFONY__ENV__TWOFACTOR_SENDER=...` (defaults to "`no-reply@wallabag.org`", the address wallabag uses for two-factor emails)
|
||||
- `-e SYMFONY__ENV__FOSUSER_REGISTRATION=...`(defaults to "true", enable or disable public user registration)
|
||||
- `-e SYMFONY__ENV__FOSUSER_CONFIRMATION=...`(defaults to "true", enable or disable registration confirmation)
|
||||
- `-e SYMFONY__ENV__DOMAIN_NAME=...` defaults to "`https://your-wallabag-url-instance.com`", the URL of your wallabag instance)
|
||||
- `-e SYMFONY__ENV__REDIS_SCHEME=...` (defaults to "tcp", protocol to use to communicate with the target server (tcp, unix, or http))
|
||||
- `-e SYMFONY__ENV__REDIS_HOST=...` (defaults to "redis", IP or hostname of the target server)
|
||||
- `-e SYMFONY__ENV__REDIS_PORT=...` (defaults to "6379", port of the target host)
|
||||
- `-e SYMFONY__ENV__REDIS_PATH=...`(defaults to "~", path of the unix socket file)
|
||||
- `-e SYMFONY__ENV__REDIS_PASSWORD=...` (defaults to "~", this is the password defined in the Redis server configuration)
|
||||
- `-e SYMFONY__ENV__SENTRY_DSN=...` (defaults to "~", this is the data source name for sentry)
|
||||
- `-e POPULATE_DATABASE=...`(defaults to "True". Does the DB has to be populated or is it an existing one)
|
||||
- `-e SYMFONY__ENV__SERVER_NAME=...` (defaults to "Your wallabag instance". Specifies a user-friendly name for the 2FA issuer)
|
||||
|
||||
## 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
|
||||
|
||||
```
|
||||
$ docker run -p 80:80 xsteadfastx/wallabag
|
||||
$ docker run -p 80:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" wallabag/wallabag
|
||||
```
|
||||
|
||||
and point your browser to `http://localhost:80`. For persistent storage you should start the container with the a volume:
|
||||
and point your browser to `http://localhost`. For persistent storage you should start the container with a volume:
|
||||
|
||||
```
|
||||
$ docker run -v /opt/wallabag:/var/www/wallabag/data -p 80:80 xsteadfastx/wallabag
|
||||
$ docker run -v /opt/wallabag/data:/var/www/wallabag/data -v /opt/wallabag/images:/var/www/wallabag/web/assets/images -p 80:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" wallabag/wallabag
|
||||
```
|
||||
|
||||
## mariadb / mysql
|
||||
## MariaDB / MySQL
|
||||
|
||||
For using mariadb or mysql you have to define some environment variables with the container. Example:
|
||||
For using MariaDB or MySQL you have to define some environment variables with the container. Example:
|
||||
|
||||
```
|
||||
$ docker run docker run --name wallabag-db -e "MYSQL_ROOT_PASSWORD=my-secret-pw" -d mariadb
|
||||
$ docker run --name wallabag --link wallabag-db:wallabag-db -e "MYSQL_ROOT_PASSWORD=my-secret-pw" -e "SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql" -e "SYMFONY__ENV__DATABASE_HOST=wallabag-db" -e "SYMFONY__ENV__DATABASE_PORT=3306" -e "SYMFONY__ENV__DATABASE_NAME=wallabag" -e "SYMFONY__ENV__DATABASE_USER=wallabag" -e "SYMFONY__ENV__DATABASE_PASSWORD=wallapass" -p 80:80 wallabag/wallabag
|
||||
$ docker run --name wallabag-db -e "MYSQL_ROOT_PASSWORD=my-secret-pw" -d mariadb
|
||||
$ docker run --name wallabag --link wallabag-db:wallabag-db -e "MYSQL_ROOT_PASSWORD=my-secret-pw" -e "SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql" -e "SYMFONY__ENV__DATABASE_HOST=wallabag-db" -e "SYMFONY__ENV__DATABASE_PORT=3306" -e "SYMFONY__ENV__DATABASE_NAME=wallabag" -e "SYMFONY__ENV__DATABASE_USER=wallabag" -e "SYMFONY__ENV__DATABASE_PASSWORD=wallapass" -e "SYMFONY__ENV__DATABASE_CHARSET=utf8mb4" -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" -p 80:80 wallabag/wallabag
|
||||
```
|
||||
|
||||
## postgresql
|
||||
## PostgreSQL
|
||||
|
||||
For using postgresql you have to define some environment variables with the container. Example:
|
||||
For using PostgreSQL you have to define some environment variables with the container. Example:
|
||||
|
||||
```
|
||||
$ docker run docker run --name wallabag-db -e "POSTGRES_PASSWORD=my-secret-pw" -d postgres
|
||||
$ docker run --name wallabag --link wallabag-db:wallabag-db -e "POSTGRES_PASSWORD=my-secret-pw" -e "SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql" -e "SYMFONY__ENV__DATABASE_HOST=wallabag-db" -e "SYMFONY__ENV__DATABASE_PORT=5432" -e "SYMFONY__ENV__DATABASE_NAME=wallabag" -e "SYMFONY__ENV__DATABASE_USER=wallabag" -e "SYMFONY__ENV__DATABASE_PASSWORD=wallapass" -p 80:80 wallabag/wallabag
|
||||
$ docker run --name wallabag-db -e "POSTGRES_PASSWORD=my-secret-pw" -e "POSTGRES_USER=my-super-user" -d postgres:9.6
|
||||
$ docker run --name wallabag --link wallabag-db:wallabag-db -e "POSTGRES_PASSWORD=my-secret-pw" -e "POSTGRES_USER=my-super-user" -e "SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql" -e "SYMFONY__ENV__DATABASE_HOST=wallabag-db" -e "SYMFONY__ENV__DATABASE_PORT=5432" -e "SYMFONY__ENV__DATABASE_NAME=wallabag" -e "SYMFONY__ENV__DATABASE_USER=wallabag" -e "SYMFONY__ENV__DATABASE_PASSWORD=wallapass" -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" -p 80:80 wallabag/wallabag
|
||||
```
|
||||
|
||||
## Redis
|
||||
|
||||
To use redis with a Docker link, a redis container with the name `redis` is needed and none of the `REDIS` environmental variables are needed:
|
||||
|
||||
```
|
||||
$ docker run -p 6379:6379 --name redis redis:alpine
|
||||
$ docker run -p 80:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" --link redis:redis wallabag/wallabag
|
||||
```
|
||||
|
||||
To use redis with an external redis host, set the appropriate environmental variables. Example:
|
||||
|
||||
```
|
||||
$ docker run -p 80:80 -e "SYMFONY__ENV__REDIS_HOST=my.server.hostname" -e "SYMFONY__ENV__REDIS_PASSWORD=my-secret-pw" -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" wallabag/wallabag
|
||||
```
|
||||
|
||||
## Upgrading
|
||||
|
||||
If there is a version upgrade that needs a database migration. The most easy way to do is running the `migrate` command:
|
||||
|
||||
```
|
||||
$ docker run --link wallabag-db:wallabag-db -e <... your config variables here ...> wallabag/wallabag migrate
|
||||
```
|
||||
|
||||
Or you can start the container with the new image and run the migration command manually:
|
||||
|
||||
```
|
||||
$ docker exec -t NAME_OR_ID_OF_YOUR_WALLABAG_CONTAINER /var/www/wallabag/bin/console doctrine:migrations:migrate --env=prod --no-interaction
|
||||
```
|
||||
|
||||
## docker-compose
|
||||
@@ -57,7 +110,7 @@ $ docker run --name wallabag --link wallabag-db:wallabag-db -e "POSTGRES_PASSWOR
|
||||
It's a good way to use [docker-compose](https://docs.docker.com/compose/). Example:
|
||||
|
||||
```
|
||||
version: '2'
|
||||
version: '3'
|
||||
services:
|
||||
wallabag:
|
||||
image: wallabag/wallabag
|
||||
@@ -69,16 +122,29 @@ services:
|
||||
- SYMFONY__ENV__DATABASE_NAME=wallabag
|
||||
- SYMFONY__ENV__DATABASE_USER=wallabag
|
||||
- SYMFONY__ENV__DATABASE_PASSWORD=wallapass
|
||||
- SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
|
||||
- SYMFONY__ENV__MAILER_HOST=127.0.0.1
|
||||
- SYMFONY__ENV__MAILER_USER=~
|
||||
- SYMFONY__ENV__MAILER_PASSWORD=~
|
||||
- SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
|
||||
- SYMFONY__ENV__DOMAIN_NAME=https://your-wallabag-url-instance.com
|
||||
- SYMFONY__ENV__SERVER_NAME="Your wallabag instance"
|
||||
ports:
|
||||
- "80"
|
||||
volumes:
|
||||
- /opt/wallabag/images:/var/www/wallabag/web/assets/images
|
||||
db:
|
||||
image: mariadb
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=wallaroot
|
||||
volumes:
|
||||
- /opt/wallabag:/var/lib/mysql
|
||||
- /opt/wallabag/data:/var/lib/mysql
|
||||
redis:
|
||||
image: redis:alpine
|
||||
```
|
||||
|
||||
Note that you must fill out the mail related variables according to your mail config.
|
||||
|
||||
## nginx
|
||||
|
||||
I use nginx to make wallabag public available. This is a example how to use it:
|
||||
@@ -101,3 +167,11 @@ server {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## Import worker
|
||||
|
||||
To run the [async redis import worker](https://doc.wallabag.org/en/admin/asynchronous.html#install-redis-for-asynchronous-tasks) use the following command:
|
||||
```
|
||||
$ docker run --name wallabag --link wallabag-db:wallabag-db --link redis:redis -e <... your config variables here ...> wallabag/wallabag import <type>
|
||||
```
|
||||
Where `<type>` is one of pocket, readability, instapaper, wallabag_v1, wallabag_v2, firefox or chrome.
|
||||
|
||||
22
root/entrypoint.sh
Normal file → Executable file
22
root/entrypoint.sh
Normal file → Executable file
@@ -1,8 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
provisioner () {
|
||||
echo "Starting provisioner..."
|
||||
if ! out=`ansible-playbook -i /etc/ansible/hosts /etc/ansible/entrypoint.yml -c local "$@"`;then
|
||||
echo $out;
|
||||
fi
|
||||
echo "Provisioner finished."
|
||||
}
|
||||
|
||||
if [ "$1" = "wallabag" ];then
|
||||
ansible-playbook -i /etc/ansible/hosts /etc/ansible/entrypoint.yml -c local
|
||||
provisioner
|
||||
exec s6-svscan /etc/s6/
|
||||
fi
|
||||
|
||||
if [ "$1" = "import" ];then
|
||||
provisioner --skip-tags=firstrun
|
||||
cd /var/www/wallabag/
|
||||
exec su -c "bin/console wallabag:import:redis-worker --env=prod $2 -vv" -s /bin/sh nobody
|
||||
fi
|
||||
|
||||
if [ "$1" = "migrate" ];then
|
||||
provisioner
|
||||
cd /var/www/wallabag/
|
||||
exec su -c "bin/console doctrine:migrations:migrate --env=prod --no-interaction" -s /bin/sh nobody
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -4,14 +4,39 @@
|
||||
|
||||
vars:
|
||||
|
||||
database_driver: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_DRIVER') }}"
|
||||
database_host: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_HOST') }}"
|
||||
database_name: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_NAME') }}"
|
||||
database_password: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_PASSWORD') }}"
|
||||
database_port: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_PORT') }}"
|
||||
database_driver: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_DRIVER')|default('pdo_sqlite', true) }}"
|
||||
database_host: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_HOST')|default('127.0.0.1', true) }}"
|
||||
database_name: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_NAME')|default('symfony', true) }}"
|
||||
database_password: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_PASSWORD')|default('~', true) }}"
|
||||
database_port: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_PORT')|default('~', true) }}"
|
||||
database_root_password_mariadb: "{{ lookup('env', 'MYSQL_ROOT_PASSWORD') }}"
|
||||
database_root_user_postgres: "{{ lookup('env', 'POSTGRES_USER') }}"
|
||||
database_root_password_postgres: "{{ lookup('env', 'POSTGRES_PASSWORD') }}"
|
||||
database_user: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_USER') }}"
|
||||
database_user: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_USER')|default('root', true) }}"
|
||||
database_charset: "{{ lookup('env', 'SYMFONY__ENV__DATABASE_CHARSET')|default('utf8', true) }}"
|
||||
populate_database: "{{ lookup('env', 'POPULATE_DATABASE')|default(True, true) }}"
|
||||
locale: "{{ lookup('env', 'SYMFONY__ENV__LOCALE')|default('en', true) }}"
|
||||
secret: "{{ lookup('env', 'SYMFONY__ENV__SECRET')|default('ovmpmAWXRCabNlMgzlzFXDYmCFfzGv', true) }}"
|
||||
mailer_transport: "{{ lookup('env', 'SYMFONY__ENV__MAILER_TRANSPORT')|default('smtp', true) }}"
|
||||
mailer_host: "{{ lookup('env', 'SYMFONY__ENV__MAILER_HOST')|default('127.0.0.1', true) }}"
|
||||
mailer_user: "{{ lookup('env', 'SYMFONY__ENV__MAILER_USER')|default('~', true) }}"
|
||||
mailer_password: "{{ lookup('env', 'SYMFONY__ENV__MAILER_PASSWORD')|default('~', true) }}"
|
||||
mailer_port: "{{ lookup('env', 'SYMFONY__ENV__MAILER_PORT')|default('25', true) }}"
|
||||
mailer_encryption: "{{ lookup('env', 'SYMFONY__ENV__MAILER_ENCRYPTION')|default('~', true) }}"
|
||||
mailer_auth_mode: "{{ lookup('env', 'SYMFONY__ENV__MAILER_AUTH_MODE')|default('~', true) }}"
|
||||
from_email: "{{ lookup('env', 'SYMFONY__ENV__FROM_EMAIL')|default('wallabag@example.com', true) }}"
|
||||
twofactor_auth: "{{ lookup('env', 'SYMFONY__ENV__TWOFACTOR_AUTH')|default('true', true) }}"
|
||||
twofactor_sender: "{{ lookup('env', 'SYMFONY__ENV__TWOFACTOR_SENDER')|default('no-reply@wallabag.org', true) }}"
|
||||
registration: "{{ lookup('env', 'SYMFONY__ENV__FOSUSER_REGISTRATION')|default('true', true) }}"
|
||||
registration_mail_confirmation: "{{ lookup('env', 'SYMFONY__ENV__FOSUSER_CONFIRMATION')|default('true', true) }}"
|
||||
domain_name: "{{ lookup('env', 'SYMFONY__ENV__DOMAIN_NAME')|default('https://your-wallabag-url-instance.com', true) }}"
|
||||
redis_scheme: "{{ lookup('env', 'SYMFONY__ENV__REDIS_SCHEME')|default('tcp', true) }}"
|
||||
redis_host: "{{ lookup('env', 'SYMFONY__ENV__REDIS_HOST')|default('redis', true) }}"
|
||||
redis_port: "{{ lookup('env', 'SYMFONY__ENV__REDIS_PORT')|default('6379', true) }}"
|
||||
redis_path: "{{ lookup('env', 'SYMFONY__ENV__REDIS_PATH')|default('~', true) }}"
|
||||
redis_password: "{{ lookup('env', 'SYMFONY__ENV__REDIS_PASSWORD')|default('~', true) }}"
|
||||
sentry_dsn: "{{ lookup('env', 'SYMFONY__ENV__SENTRY_DSN')|default('~', true) }}"
|
||||
server_name: "{{ lookup('env', 'SYMFONY__ENV__SERVER_NAME')|default('Your wallabag instance', true) }}"
|
||||
|
||||
tasks:
|
||||
|
||||
@@ -20,9 +45,19 @@
|
||||
path={{ item }}
|
||||
state=directory
|
||||
with_items:
|
||||
- /var/www/wallabag/data/db
|
||||
- /var/www/wallabag/app
|
||||
- /var/www/wallabag/app/config
|
||||
- /var/www/wallabag/data
|
||||
- /var/www/wallabag/data/assets
|
||||
- /var/www/wallabag/data/db
|
||||
notify: chown dir
|
||||
tags:
|
||||
- firstrun
|
||||
|
||||
- name: write parameters.yml
|
||||
template:
|
||||
src=templates/parameters.yml.j2
|
||||
dest=/var/www/wallabag/app/config/parameters.yml
|
||||
|
||||
- stat:
|
||||
path=/var/www/wallabag/data/db/wallabag.sqlite
|
||||
@@ -52,8 +87,12 @@
|
||||
login_port={{ database_port }}
|
||||
login_user=root
|
||||
login_password="{{ database_root_password_mariadb }}"
|
||||
encoding="utf8mb4"
|
||||
notify: run install
|
||||
when: database_driver == 'pdo_mysql'
|
||||
when: (database_driver == 'pdo_mysql') and
|
||||
(populate_database == True)
|
||||
tags:
|
||||
- firstrun
|
||||
|
||||
- name: add mariadb user
|
||||
mysql_user:
|
||||
@@ -67,7 +106,10 @@
|
||||
login_password="{{ database_root_password_mariadb }}"
|
||||
state=present
|
||||
when: (database_driver == 'pdo_mysql') and
|
||||
(database_user != 'root')
|
||||
(database_user != 'root') and
|
||||
(populate_database == True)
|
||||
tags:
|
||||
- firstrun
|
||||
|
||||
- name: postgresql db
|
||||
postgresql_db:
|
||||
@@ -75,24 +117,31 @@
|
||||
state=present
|
||||
login_host="{{ database_host }}"
|
||||
port={{ database_port }}
|
||||
login_user=postgres
|
||||
login_user="{{ database_root_user_postgres }}"
|
||||
login_password="{{ database_root_password_postgres }}"
|
||||
notify: run install
|
||||
when: database_driver == 'pdo_pgsql'
|
||||
when: (database_driver == 'pdo_pgsql') and
|
||||
(populate_database == True)
|
||||
tags:
|
||||
- firstrun
|
||||
|
||||
- name: add postgresql user
|
||||
postgresql_user:
|
||||
name="{{ database_user }}"
|
||||
password="{{ database_password }}"
|
||||
encrypted=true
|
||||
db={{ database_name }}
|
||||
priv=ALL
|
||||
login_host="{{ database_host }}"
|
||||
port={{ database_port }}
|
||||
login_user=postgres
|
||||
login_user="{{ database_root_user_postgres }}"
|
||||
login_password="{{ database_root_password_postgres }}"
|
||||
state=present
|
||||
when: (database_driver == 'pdo_pgsql') and
|
||||
(database_user != 'postgres')
|
||||
(database_user != 'postgres') and
|
||||
(populate_database == True)
|
||||
tags:
|
||||
- firstrun
|
||||
|
||||
- name: remove cache
|
||||
file:
|
||||
|
||||
63
root/etc/ansible/templates/parameters.yml.j2
Normal file
63
root/etc/ansible/templates/parameters.yml.j2
Normal file
@@ -0,0 +1,63 @@
|
||||
parameters:
|
||||
database_driver: {{ database_driver }}
|
||||
database_host: {{ database_host }}
|
||||
database_port: {{ database_port }}
|
||||
database_name: {{ database_name }}
|
||||
database_user: {{ database_user }}
|
||||
database_password: {{ database_password }}
|
||||
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
|
||||
database_table_prefix: wallabag_
|
||||
database_socket: null
|
||||
database_charset: {{ database_charset }}
|
||||
|
||||
domain_name: {{ domain_name }}
|
||||
|
||||
mailer_transport: {{ mailer_transport }}
|
||||
mailer_user: {{ mailer_user }}
|
||||
mailer_password: {{ mailer_password }}
|
||||
mailer_host: {{ mailer_host }}
|
||||
mailer_port: {{ mailer_port }}
|
||||
mailer_encryption: {{ mailer_encryption }}
|
||||
mailer_auth_mode: {{ mailer_auth_mode }}
|
||||
|
||||
locale: {{ locale }}
|
||||
|
||||
# A secret key that's used to generate certain security-related tokens
|
||||
secret: {{ secret }}
|
||||
|
||||
# two factor stuff
|
||||
twofactor_auth: {{ twofactor_auth }}
|
||||
twofactor_sender: {{ twofactor_sender }}
|
||||
|
||||
# fosuser stuff
|
||||
fosuser_registration: {{ registration }}
|
||||
fosuser_confirmation: {{ registration_mail_confirmation }}
|
||||
|
||||
# how long the access token should live in seconds for the API
|
||||
fos_oauth_server_access_token_lifetime: 3600
|
||||
# how long the refresh token should life in seconds for the API
|
||||
fos_oauth_server_refresh_token_lifetime: 1209600
|
||||
|
||||
from_email: {{ from_email }}
|
||||
|
||||
rss_limit: 50
|
||||
|
||||
# RabbitMQ processing
|
||||
rabbitmq_host: localhost
|
||||
rabbitmq_port: 5672
|
||||
rabbitmq_user: guest
|
||||
rabbitmq_password: guest
|
||||
rabbitmq_prefetch_count: 10
|
||||
|
||||
# Redis processing
|
||||
redis_scheme: {{ redis_scheme }}
|
||||
redis_host: {{ redis_host }}
|
||||
redis_port: {{ redis_port }}
|
||||
redis_path: {{ redis_path }}
|
||||
redis_password: {{ redis_password }}
|
||||
|
||||
# sentry logging
|
||||
sentry_dsn: {{ sentry_dsn }}
|
||||
|
||||
# User-friendly name of your instance for 2FA issuer
|
||||
server_name: {{ server_name }}
|
||||
@@ -23,6 +23,7 @@ http {
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
open_file_cache max=100;
|
||||
client_max_body_size 100M;
|
||||
|
||||
|
||||
upstream php-upstream {
|
||||
@@ -30,6 +31,7 @@ http {
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /var/www/wallabag/web;
|
||||
|
||||
|
||||
@@ -268,7 +268,7 @@ output_buffering = 4096
|
||||
; Note: You need to use zlib.output_handler instead of the standard
|
||||
; output_handler, or otherwise the output will be corrupted.
|
||||
; http://php.net/zlib.output-compression
|
||||
zlib.output_compression = Off
|
||||
zlib.output_compression = On
|
||||
|
||||
; http://php.net/zlib.output-compression-level
|
||||
;zlib.output_compression_level = -1
|
||||
@@ -373,7 +373,7 @@ zend.enable_gc = On
|
||||
; threat in any way, but it makes it possible to determine whether you use PHP
|
||||
; on your server or not.
|
||||
; http://php.net/expose-php
|
||||
expose_php = On
|
||||
expose_php = Off
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
; Resource Limits ;
|
||||
@@ -670,7 +670,7 @@ auto_globals_jit = On
|
||||
; Its value may be 0 to disable the limit. It is ignored if POST data reading
|
||||
; is disabled through enable_post_data_reading.
|
||||
; http://php.net/post-max-size
|
||||
post_max_size = 20G
|
||||
post_max_size = 100M
|
||||
|
||||
; Automatically add files before PHP document.
|
||||
; http://php.net/auto-prepend-file
|
||||
@@ -802,7 +802,7 @@ upload_tmp_dir = /tmp/
|
||||
|
||||
; Maximum allowed size for uploaded files.
|
||||
; http://php.net/upload-max-filesize
|
||||
upload_max_filesize = 20G
|
||||
upload_max_filesize = 100M
|
||||
|
||||
; Maximum number of files that can be uploaded via a single request
|
||||
max_file_uploads = 20
|
||||
2
root/etc/s6/.s6-svscan/finish
Executable file
2
root/etc/s6/.s6-svscan/finish
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
exec /bin/true
|
||||
@@ -1,36 +1,63 @@
|
||||
parameters:
|
||||
database_driver: %env.database_driver%
|
||||
database_host: %env.database_host%
|
||||
database_port: %env.database_port%
|
||||
database_name: %env.database_name%
|
||||
database_user: %env.database_user%
|
||||
database_password: %env.database_password%
|
||||
database_driver: pdo_sqlite
|
||||
database_host: 127.0.0.1
|
||||
database_port: ~
|
||||
database_name: symfony
|
||||
database_user: root
|
||||
database_password: ~
|
||||
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
|
||||
database_table_prefix: wallabag_
|
||||
database_socket: null
|
||||
database_charset: utf8
|
||||
|
||||
test_database_driver: pdo_sqlite
|
||||
test_database_host: 127.0.0.1
|
||||
test_database_port: ~
|
||||
test_database_name: ~
|
||||
test_database_user: ~
|
||||
test_database_password: ~
|
||||
test_database_path: "%kernel.root_dir%/../data/db/wallabag_test.sqlite"
|
||||
domain_name: https://your-wallabag-url-instance.com
|
||||
|
||||
mailer_transport: smtp
|
||||
mailer_host: 127.0.0.1
|
||||
mailer_user: ~
|
||||
mailer_password: ~
|
||||
mailer_host: 127.0.0.1
|
||||
mailer_port: false
|
||||
mailer_encryption: ~
|
||||
mailer_auth_mode: ~
|
||||
|
||||
locale: en
|
||||
|
||||
# A secret key that's used to generate certain security-related tokens
|
||||
secret: %env.secret%
|
||||
secret: ovmpmAWXRCabNlMgzlzFXDYmCFfzGv
|
||||
|
||||
# two factor stuff
|
||||
twofactor_auth: true
|
||||
twofactor_sender: no-reply@wallabag.org
|
||||
|
||||
# fosuser stuff
|
||||
fosuser_registration: true
|
||||
fosuser_confirmation: true
|
||||
|
||||
# how long the access token should live in seconds for the API
|
||||
fos_oauth_server_access_token_lifetime: 3600
|
||||
# how long the refresh token should life in seconds for the API
|
||||
fos_oauth_server_refresh_token_lifetime: 1209600
|
||||
|
||||
from_email: no-reply@wallabag.org
|
||||
|
||||
rss_limit: 50
|
||||
|
||||
# RabbitMQ processing
|
||||
rabbitmq_host: localhost
|
||||
rabbitmq_port: 5672
|
||||
rabbitmq_user: guest
|
||||
rabbitmq_password: guest
|
||||
rabbitmq_prefetch_count: 10
|
||||
|
||||
# Redis processing
|
||||
redis_scheme: tcp
|
||||
redis_host: localhost
|
||||
redis_port: 6379
|
||||
redis_path: null
|
||||
redis_password: null
|
||||
|
||||
# sentry logging
|
||||
sentry_dsn: ~
|
||||
|
||||
# User-friendly name of your instance for 2FA issuer
|
||||
server_name: Your wallabag instance
|
||||
|
||||
9
tests/docker-compose.default.yml
Normal file
9
tests/docker-compose.default.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
version: '2'
|
||||
services:
|
||||
wallabag:
|
||||
build:
|
||||
context: ../
|
||||
image: wallabag:default
|
||||
container_name: wallabag
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
23
tests/docker-compose.mariadb.yml
Normal file
23
tests/docker-compose.mariadb.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
version: '2'
|
||||
services:
|
||||
wallabag:
|
||||
build:
|
||||
context: ../
|
||||
image: wallabag:mariadb
|
||||
container_name: wallabag
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=wallaroot
|
||||
- SYMFONY__ENV__SECRET=F00B4R
|
||||
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
|
||||
- SYMFONY__ENV__DATABASE_HOST=db
|
||||
- SYMFONY__ENV__DATABASE_PORT=3306
|
||||
- SYMFONY__ENV__DATABASE_NAME=wallabag
|
||||
- SYMFONY__ENV__DATABASE_USER=wallabag
|
||||
- SYMFONY__ENV__DATABASE_PASSWORD=wallapass
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
db:
|
||||
image: mariadb
|
||||
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --character-set-client-handshake=FALSE
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=wallaroot
|
||||
24
tests/docker-compose.postgresql.yml
Normal file
24
tests/docker-compose.postgresql.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
version: '2'
|
||||
services:
|
||||
wallabag:
|
||||
build:
|
||||
context: ../
|
||||
image: wallabag:postgresql
|
||||
container_name: wallabag
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=my-secret-pw
|
||||
- POSTGRES_USER=my-super-user
|
||||
- SYMFONY__ENV__SECRET=F00B4R
|
||||
- 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=wallapass
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
db:
|
||||
image: postgres:10.3
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=my-secret-pw
|
||||
- POSTGRES_USER=my-super-user
|
||||
17
tests/docker-compose.sqlite.yml
Normal file
17
tests/docker-compose.sqlite.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
version: '2'
|
||||
services:
|
||||
wallabag:
|
||||
build:
|
||||
context: ../
|
||||
image: wallabag:sqlite
|
||||
container_name: wallabag
|
||||
environment:
|
||||
- SYMFONY__ENV__DATABASE_DRIVER=pdo_sqlite
|
||||
- SYMFONY__ENV__DATABASE_HOST=127.0.0.1
|
||||
- SYMFONY__ENV__DATABASE_PORT=~
|
||||
- SYMFONY__ENV__DATABASE_NAME=symfony
|
||||
- SYMFONY__ENV__DATABASE_USER=root
|
||||
- SYMFONY__ENV_DATABASE_PASSWORD=~
|
||||
- SYMFONY__ENV__SECRET=F00B4R
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
47
tests/test_login.py
Normal file
47
tests/test_login.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import pytest
|
||||
import re
|
||||
import requests
|
||||
|
||||
|
||||
URL = 'http://127.0.0.1:80'
|
||||
|
||||
|
||||
def test_accessing_login_page():
|
||||
r = requests.get(URL, allow_redirects=True)
|
||||
|
||||
assert r.status_code == 200
|
||||
assert 'Log in' in r.text
|
||||
assert 'Password' in r.text
|
||||
assert 'Register' in r.text
|
||||
assert 'Username' in r.text
|
||||
|
||||
|
||||
def test_logging_in():
|
||||
client = requests.session()
|
||||
r = client.get(URL, allow_redirects=True)
|
||||
jar = r.cookies
|
||||
|
||||
# get csrf token
|
||||
csrf_match = re.search(
|
||||
'<input type="hidden" name="_csrf_token" value="(.*)" />',
|
||||
r.text
|
||||
)
|
||||
|
||||
if csrf_match:
|
||||
csrf = csrf_match.group(1)
|
||||
else:
|
||||
# if there is no csrf token the test will fail
|
||||
pytest.fail('csrf not matched')
|
||||
|
||||
data = {
|
||||
'_username': 'wallabag',
|
||||
'_password': 'wallabag',
|
||||
'_csrf_token': csrf
|
||||
}
|
||||
|
||||
r = client.post(URL + '/login_check', cookies=jar, data=data)
|
||||
assert r.status_code == 200
|
||||
assert '/unread/list' in r.text
|
||||
assert '/starred/list' in r.text
|
||||
assert '/archive/list' in r.text
|
||||
assert '/all/list' in r.text
|
||||
Reference in New Issue
Block a user