Good morning alltogether,
i am using ONLYOFFICE in Nextcloud (meanwhile NC 25.0.1) running office under docker.
To simplify the periodically updates in docker image files for ONLYOFFICE i have made a bash script executable via cron job.
My Script acts as follows:
#!/bin/bash
#
echo "Stoppe docker container ONLYOFFICE"
docker stop ONLYOFFICE
docker rm ONLYOFFICE
docker system prune -a -f
#
echo "Lade neuestes image herunter ..."
docker pull onlyoffice/documentserver
echo "Starte neuen Container ONLYOFFICE; Portmapping 8443:443"
#
docker run --name=ONLYOFFICE -i -t -d -p 8443:443 --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
-e JWT_ENABLED='true' -e JWT_SECRET='MY-SECRET' onlyoffice/documentserver
#
echo "ONLYOFFICE neu gestartet"
docker ps
echo "Sende Email >>"
/usr/bin/sendEmail -v -f MY-EMAILADRESS -s MY-SMTP-SERVER:587 -xu USERNAME-FOR-MAILSERVER -xp PASSWORD-FOR-MAILSERVER -t TO-ADRESS -o tls=yes -u ONLYOFFICE Image update und Docker Neustart -m Der ONLYOFFICE docker container wurde mit einem neuen Image gestartet! -a /var/log/oo_update.log
echo "Starte Dienste neu"
systemctl stop php8.1-fpm && systemctl stop nginx && systemctl restart postgresql
echo "PostgreSQL erfolgreich neu gestartet"
sleep 1
systemctl start php8.1-fpm
echo "PHP 8.1 erfolgreich neu gestartet"
sleep 1
systemctl start nginx
echo "NGinx Wegserver erfolgreich neu gestartet"
exit 0
That is working good for me so far and i have periodically checked the docker image server to download a fresh ONLYOFFICE.
I know that i can enter my docker instance by terminal via
sudo docker exec -ti ONLYOFFICE bash
In docker i can append a line to my /etc/hosts file in ONLYOFFICE docker via
echo "IP-OF-MY-NEXTCLOUDSERVER NAME NAME.MY-DOMAIN" >>/etc/hosts
So far so good.
Every time i let the bash script install a new image, this setting is gone, clear.
How can i automatically do this appendix to the /etc/hosts file in docker via expanding my script above?
The reason for that:
Since update to NC 25.0.1 i got errors like
→ [Onlyoffice] Error while downloading the document file to be converted
Thnaks for any ideas
KarlF12
November 26, 2022, 3:26pm
2
You could do that a few ways. Simplest (but perhaps not safest) might be to use docker cp
to overwrite the hosts file. Or you could write a script for it, copy it in with docker cp
and then run it with docker exec
.
You might even be able to run the echo command in docker exec
, but I’m not sure if passing the output redirection will work.
Many thanks for your reply.
I tried to use cp lika that
docker cp ONLYOFFICE:/etc/hosts /tmp/hosts
(worked good!)
Then appended the IP of my Nextcloudserver with echo “…”
But then
docker cp /tmp/hosts ONLYOFFICE:/etc/hosts
failed with error because the /etc/hosts file in the docker container is secured.
→ Unable to copy over hosts file into container: "device or resource busy" · Issue #22281 · moby/moby · GitHub
But i found another solution maybe also for others.
Using the –add-host Option is doing the trick!
My script looks like this now and it is working as expected:
#!/bin/bash
#
echo "Stoppe docker container ONLYOFFICE"
docker stop ONLYOFFICE
docker rm ONLYOFFICE
docker system prune -a -f
#
echo "Lade neuestes image herunter ..."
docker pull onlyoffice/documentserver
echo "Starte neuen Container ONLYOFFICE; Portmapping 8443:443"
#
docker run --name=ONLYOFFICE -i -t -d -p 8443:443 --restart=always --add-host=HOSTNAME-OF-THE-NC-SERVER:IP-OF-THE-NC-SERVER \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
-e JWT_ENABLED='true' -e JWT_SECRET='MY-SECRET' onlyoffice/documentserver
#
echo "ONLYOFFICE neu gestartet"
docker ps
echo "Sende Email >>"
/usr/bin/sendEmail -v -f MAILADRESS -s SMTP-SERVER:587 -xu USERNAME -xp PASSWORD -t RECEIPIENT -o tls=yes -u ONLYOFFICE Image update und Docker Neustart -m Der ONLYOFFICE docker container wurde mit einem neuen Image gestartet! -a /var/log/oo_update.log
echo "Starte Dienste neu"
systemctl stop php8.1-fpm && systemctl stop nginx && systemctl restart postgresql
echo "PostgreSQL erfolgreich neu gestartet"
sleep 1
systemctl start php8.1-fpm
echo "PHP 8.1 erfolgreich neu gestartet"
sleep 1
systemctl start nginx
echo "NGinx Wegserver erfolgreich neu gestartet"
exit 0
So every time the script generates a new ONLYOFFICE image it also inserted the hostname and IP Adress of the Nextcloud Server as well.
Hope this can help others with similar questions.
Nice feature of the --add-host Option is, that it can used multiple times
–add-host=HOST1:IP --add-host=HOST2:IP …