Docker常用应用之稍后阅读
1.简介
wallabag是一款开源的,可以自托管的稍后阅读工具。提供了浏览器插件和手机客户端,可以很方便的收藏文章用于稍后再看。
wallabag官网,wallabag github地址,wallabag dockerhub
2.部署
2.1.docker部署
cd /docker_data/
mkdir -p wallabag/data
cd wallabag
vi docker-compose.yml
version: '3'
services:
wallabag:
image: wallabag/wallabag
container_name: wallabag
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
- SYMFONY__ENV__DATABASE_HOST=wallabag_mysql
- SYMFONY__ENV__DATABASE_PORT=3306
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=wallabag
- SYMFONY__ENV__DATABASE_PASSWORD=wallapass
- SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
- SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_"
- SYMFONY__ENV__REDIS_HOST=wallabag_redis
- SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1
- SYMFONY__ENV__FROM_EMAIL=666666666@qq.com
- SYMFONY__ENV__DOMAIN_NAME=https://reader.giegie.top
- SYMFONY__ENV__SERVER_NAME="monkey's wallabag"
- TZ=Asia/Shanghai
volumes:
- /docker_data/wallabag/images:/var/www/wallabag/web/assets/images
healthcheck:
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost"]
interval: 1m
timeout: 3s
depends_on:
- db
- redis
db:
image: mariadb
container_name: wallabag_mysql
user: "1000:1000" # 宿主docker执行用户的UID和PID,容器内以1000.1000执行mysql
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
- TZ=Asia/Shanghai
volumes:
- /docker_data/wallabag/data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 20s
timeout: 3s
redis:
image: redis:alpine
container_name: wallabag_redis
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 3s
networks: #所有的容器都在all_net上,彼此之间可以使用容器名访问,因此Nginx proxy manager可以方向代理,容器不需要把端口暴露在宿主机
default:
name: all_net
external: true
docker compose up -d
2.2.添加反向代理
在DNS域名提供商提前做好解析
在Nginx Proxy Manager中添加
3.登录
默认用户名密码 wallabag/wallabag
4.常用设置
设置语言:My account ---> Config --->Language --->简体中文
修改密码:我的账户---》配置---》密码
5.疑难杂症
5.1.保存图片到本地
我的账户---》内部设置---》杂项 ---》在本地缓存图片---》1
wallabag容器内使用nobody执行的,images创建出来在宿主机的用户是root,因此无法在images下创建目录,权限不足
# 1.可以把images目录权限修改为777
cd /docker_data/wallabag
sudo chmod 777 images
# 2.可以把images目录属组修改为65534(容器内nobody uid为65534),用这个方法会导致宿主机docker执行用户无法进入目录
sudo chown -R 65534:65534 images
5.2.异步导入
我的账户---》内部设置---》启用 Redis 来异步导入数据---》1
试了很多次异步导入,json文件导入后,总是不会启动,可以用下面的命令手动启动
docker exec -it wallabag_redis redis-cli
# 可以看到redis中已经有了key,但就是不开始导入
docker exec -it --user nobody wallabag /var/www/wallabag/bin/console wallabag:import:redis-worker <type> --env=prod
# 其中<type>是你导入的类型,比如firefox、chrome、wallabag_v2等