Adding themes and plugins worked fine. I can’t get data migration plugin to work though.

docker exec ttrssdocker_app_1 php /var/www/html/tt-rss/update.php --data_user admin --data_import articles-of-user-admin.zip

Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade.
Please fix errors indicated by the following messages:

  • Please don’t run this script as root.

You might want to check tt-rss wiki or the forums for more information.
Please search the forums before creating new topic for your question.

you’re looking for docker exec --user app ... or something similar to that.

It’s exactly that.

I should do some reading before complaining.

i’ll mention this CLI thing in the FAQ.

btw i’ve updated the installation guide. is this clear enough (the docker section, that is) or should it be improved somehow?

https://git.tt-rss.org/fox/tt-rss/wiki/InstallationNotes

docker exec --user app ttrssdocker_app_1 php /var/www/html/tt-rss/update.php --data_user admin --data_import articles-of-user-admin.zip

[20:03:33/257] Lock: update.lock
[20:03:33/257] importing articles of user admin from articles-of-user-admin.zip…
PHP Fatal error: Uncaught Error: Class ‘ZipArchive’ not found in /var/www/html/tt-rss/plugins.local/data_migration/init.php:46
Stack trace:
#0 /var/www/html/tt-rss/classes/pluginhost.php(345): Data_Migration->data_import(Array)
#1 /var/www/html/tt-rss/update.php(486): PluginHost->run_commands(Array)
#2 {main}
thrown in /var/www/html/tt-rss/plugins.local/data_migration/init.php on line 46

That did not go too smoothly. Is that a php extension missing?

probably needs this package - Alpine Linux packages

i’ll take a look at this tomorrow, it’s getting late. :zzz:

e: or this Cannot install ext-zip on php:7.3-alpine · Issue #797 · docker-library/php · GitHub

images rebuilt with php7-zip should be available in a bit.

Yep this works as intended now. Got my import successfully done.
I’m moving this to production now. Let’s see how this goes.

For anyone trying to do the same (given you already exported your data via data migration plugin) :

  1. Figure out where you ttrss web app lives
    docker volume inspect ttrssdocker_app | grep Mountpoint
  2. cd into that directory and checkout data_migration plugin to plugins.local/data_migration
  3. Move your export data to ttrss root directory
  4. Enable data migration plugin in config.php
  5. Import our data (make sure you specify the correct user name)
    docker exec --user app ttrssdocker_app_1 php /var/www/html/tt-rss/update.php --data_user admin --data_import articles-of-user-admin.zip

The condition in build-prepare.sh script in L6 and L15

https://git.tt-rss.org/fox/ttrss-docker-compose/src/static-dockerhub/src/app/build-prepare.sh#L15

will always be true. During build time the container is always a fresh install.

Shouldn’t the docker-compose.yml be renamed to *.yml-dist to not interfere with local changes?!

BTW: I cannot fork (just registered ‘meyca’ on git.tt-rss.org)

BTW: Thanks for picking up my thoughts on splitting the container setup :slight_smile:

thanks! this is what i get copy-pasting code.

you should be able to use docker-compose.override.yml i think.

and now you can!

Thanks, I wasn’t aware of this.

Thanks, again! I wasn’t aware you were already working on this. I suggest to include “–branch master --depth 1” to the git clone statement, because the container does not need a code history.

good idea, i’ll update build.sh to use --branch etc.

126 to 41 MB, very nice.

:smiley:

I just switched my setup to these container(s).

However, I stick to nginx:alpine web container, because it is much smaller than Caddy and my setup is terminating SSL in a traefik.io container.

edit: I’ll report if automatic updates via watchtower work as expected.

Automatic updates with watchtower appear to be working fine…I’ve already received 4 new image updates since I migrated yesterday

2020-01-25 14:18:57 (info): Found new cthulhoo/ttrss-fpm-pgsql-static:latest image (sha256:06b1a29dc7b589b76d85d7d84f3f2696631a94e4a0b411050fbce730068cc8fe)
2020-01-25 14:18:59 (info): Executing pre-update command.
2020-01-25 14:18:59 (info): Stopping /tt-rss_app (293cf9d36a1575bbe34ddb717e4b6523393510b148e8118aee27883d513b1025) with SIGTERM
2020-01-25 14:19:12 (info): Creating /tt-rss_app

there’s an image history, not just :latest, so tecnically it’s even possible to revert to an older version if needed (unless there was a schema update).

i’m still not sure why would anyone need another docker container to do something like

docker-compose pull && docker-compose down && docker compose up -d

in cron

being triggered from outside

  • the time between update available and update running is smaller
  • no unnecessary downtimes

app container logs reports error:

ttrss-docker_updater_1 exited with code 2
ttrss-docker_app_1 exited with code 2
updater_1  | /bin/sh: illegal option -
updater_1  | /bin/sh: illegal option -
updater_1  | /bin/sh: illegal option -
app_1      | /bin/sh: illegal option -
app_1      | /bin/sh: illegal option -
app_1      | /bin/sh: illegal option -
app_1      | /bin/sh: illegal option -

This could be the problem, as there are differences between docker on Windows and docker on Linux. Sorry, I cannot help with that.

Reading the install notes I see the following:

  • Caddy has its http port exposed to the outside
  • optional SSL support via Caddy w/ automatic letsencrypt certificates

Shouldn’t SSL be the default these days?

  1. caddy binds to 127.0.0.1 by default so you’d use your usual ssl terminating setup
  2. letsencrypt is optional if you can’t use the above

these (and other) amazing insights you could’ve learned by reading the README in its entirety before posting