Unable to download images locally when mapping image directory to external folder.
- Dominant language
- Shell
- Stars
- 769
- Forks
- 168
- PR merge metrics
- No merged PRs in 30d
Description
I am running Wallabag in Portainer using Docker Compose.
Wallabag Docker Image version: 2.6.13
If you do not map the image directory to an external folder, like this:
```
services:
wallabag:
image: wallabag/wallabag
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
- SYMFONY__ENV__DATABASE_HOST=wallabagdb
- 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__MAILER_DSN=smtp://127.0.0.1
- SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
- SYMFONY__ENV__DOMAIN_NAME=http://192.168.10.50:2081
- SYMFONY__ENV__SERVER_NAME="Wallabag453"
ports:
- "2081:80"
depends_on:
wallabagdb:
condition: service_healthy
wallabagredis:
condition: service_healthy
wallabagdb:
image: mariadb
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
volumes:
- /share/Portainer/Wallabag/data:/var/lib/mysql
healthcheck:
test: ["CMD", "/usr/local/bin/healthcheck.sh", "--innodb_initialized"]
interval: 20s
timeout: 3s
wallabagredis:
image: redis:alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 3s
```
Downloading images locally works fine.
However, if you map the image directory to an external folder (because you want that data to be persistent), it seems to create the folder as root and you run into permissions issues.
```
services:
wallabag:
image: wallabag/wallabag
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
- SYMFONY__ENV__DATABASE_HOST=wallabagdb
- 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__MAILER_DSN=smtp://127.0.0.1
- SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
- SYMFONY__ENV__DOMAIN_NAME=http://192.168.10.50:2081
- SYMFONY__ENV__SERVER_NAME="Wallabag453"
ports:
- "2081:80"
volumes:
- /share/Portainer/Wallabag/images:/var/www/wallabag/web/assets/images
depends_on:
wallabagdb:
condition: service_healthy
wallabagredis:
condition: service_healthy
wallabagdb:
image: mariadb
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
volumes:
- /share/Portainer/Wallabag/data:/var/lib/mysql
healthcheck:
test: ["CMD", "/usr/local/bin/healthcheck.sh", "--innodb_initialized"]
interval: 20s
timeout: 3s
wallabagredis:
image: redis:alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 3s
```
The folder is owned by root:
[downloadimages-folderisroot.txt](https://github.com/user-attachments/files/20747676/downloadimages-folderisroot.txt)
Trying to download images results in permission errors:
[downloadimages-folderisroot-downloaderrors.txt](https://github.com/user-attachments/files/20747681/downloadimages-folderisroot-downloaderrors.txt)
If you chmod 777 the folder:
[downloadimages-folderis777.txt](https://github.com/user-attachments/files/20747682/downloadimages-folderis777.txt)
It still results in download errors:
[downloadimages-folderis777-downloaderrors.txt](https://github.com/user-attachments/files/20747683/downloadimages-folderis777-downloaderrors.txt)
And the image folder is still empty:
[downloadimages-folderis777-emptydirectory.txt](https://github.com/user-attachments/files/20747684/downloadimages-folderis777-emptydirectory.txt)
I saw in another issue that someone changed the owner to nobody, so I tried that next. It still results in permission errors:
[downloadimages-folderisnobody-downloaderrors.txt](https://github.com/user-attachments/files/20747685/downloadimages-folderisnobody-downloaderrors.txt)
However, the files **did** download. You can see them:
[downloadimages-folderisnobody-imagesdownloaded.txt](https://github.com/user-attachments/files/20747690/downloadimages-folderisnobody-imagesdownloaded.txt)
But you can still see the errors when you try to download images, and they don't display on the article. You also can't view the image file directly, you get a "Not route found" error in your browser.


I know similar issues have been closed attributing it to permission issues, but I think this seems to be Docker specific. Changing the permissions on the folder to 777 and owned by nobody still results in errors and the images not displaying (although they do seemed to download, and I can view them in the folder mapped via volumes.)
If you disable downloading images locally, everything else seems to work as expected as far as I can tell.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.