Commit Graph

175 Commits

Author SHA1 Message Date
Girish Ramakrishnan
b1b6f70118 Kill all tasks on shutdown and startup
BindsTo will kill all the tasks when systemctl stop box is executed.
But when restarted, it keeps the tasks running. Because of this behavior,
we kill the tasks on startup and stop of the box code.
2020-08-06 23:47:40 -07:00
Girish Ramakrishnan
d089444441 db upgrade: stop containers only after exporting
we cannot export if the containers were nuked in the platform logic.
for this reason, move the removal near the place where they get started.
2020-07-30 15:28:53 -07:00
Girish Ramakrishnan
b0d65a1bae rename startApps to markApps 2020-07-30 15:28:50 -07:00
Girish Ramakrishnan
7efb57c8da restart apps on addon container change
when the IP changes on addon container re-create, the apps don't
detect this (maybe there is some large DNS cache timeout in docker)
2020-05-22 16:45:03 -07:00
Johannes Zellner
b366b0fa6a Stop container with isCloudronManged labels instead of by network 2020-03-28 22:46:32 +01:00
Girish Ramakrishnan
85c13cae58 Fix platform update logic 2019-09-24 21:21:49 -07:00
Girish Ramakrishnan
1a061e4446 Only check installationState to resume tasks
also, make resumeTasks go via app logic to capture end of task
2019-09-24 00:37:29 -07:00
Girish Ramakrishnan
9f1210202a port taskmanager to use tasks 2019-08-28 15:17:53 -07:00
Girish Ramakrishnan
9c2ff2f862 fix image prune logic 2019-05-29 12:15:13 -07:00
Johannes Zellner
79ccfa087d Only delete docker container within the cloudron network
When running tests they would randomly delete all local docker container
2019-04-17 12:44:03 +02:00
Girish Ramakrishnan
a0d1016c01 containerize sftp 2019-04-04 22:43:02 -07:00
Johannes Zellner
ef0403af0e Make proftpd conf static 2019-03-19 15:24:09 -07:00
Johannes Zellner
044b27967e Make initial sftp connection work 2019-03-19 15:24:09 -07:00
Girish Ramakrishnan
da2b00c9cf Move cert change notification into ensureCertificate()
When ensureCertificate renews the cert, the filename will match the
nginx config cert file. The current code detects that this implies
that the cert has not changed and thus does not update mail container.

Move the notification into ensureCertificate() itself. If we have a wildcard
cert and it gets renewed when installing a new app, then mail container will
still get it.
2019-03-04 15:24:09 -08:00
Girish Ramakrishnan
f3189f72fd Use mail.restartMail alias 2019-03-04 10:42:42 -08:00
Girish Ramakrishnan
e7294f2950 Make handleCertChanged take a callback 2018-12-11 11:02:32 -08:00
Girish Ramakrishnan
6d128595e7 all container related functionality is 'service' 2018-12-02 19:12:43 -08:00
Girish Ramakrishnan
4142d7a050 Fix error handling of all the execSync usage 2018-11-23 13:11:15 -08:00
Girish Ramakrishnan
9b4fffde29 Use shell.exec instead of shell.execSync 2018-11-23 11:18:45 -08:00
Girish Ramakrishnan
5c9b6736f0 Remove pruneInfraImages out of platform startup
If it fails, it's really OK. Maybe we will have a button to remove
images.

This goes further into step of webadmin always staying up and not
crashing/erroring for cosmetic issues.
2018-11-17 19:35:39 -08:00
Girish Ramakrishnan
82037b70e4 retry apply of platform config
it seems that scaling down addons can fail at times. this can happen
if the kernel is busy swapping things etc. so, we do not block the
platform startup for this operation.

Nov 13 05:20:00 localhost dockerd[28831]: time="2018-11-13T05:20:00.365056059Z" level=error msg="Handler for POST /v1.37/containers/mongodb/update returned error: Cannot update container 6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f: docker-runc did not terminate sucessfully: failed to write 419430400 to memory.memsw.limit_in_bytes: write /sys/fs/cgroup/memory/docker/6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f/memory.memsw.limit_in_bytes: device or resource busy\n: unknown"
Nov 13 05:20:00 localhost node[5486]: box:shell updatemongodb (stderr): Error response from daemon: Cannot update container 6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f: docker-runc did not terminate sucessfully: failed to write 419430400 to memory.memsw.limit_in_bytes: write /sys/fs/cgroup/memory/docker/6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f/memory.memsw.limit_in_bytes: device or resource busy
2018-11-12 21:58:57 -08:00
Girish Ramakrishnan
a3a22604ba Mark import errors as app errors 2018-11-11 10:36:11 -08:00
Girish Ramakrishnan
78ac1d2a12 Add isCloudronManaged label to containers managed by cloudron 2018-11-10 19:00:03 -08:00
Girish Ramakrishnan
6ec36c9605 Do not crash if platform.start fails
With this change, the box code always starts up even if nginx fails,
docker fails etc.
2018-11-10 18:34:37 -08:00
Girish Ramakrishnan
0c5cb9c98f Remove settings.initialize/uninitialize
this simplifies the startup sequence
2018-11-10 14:55:23 -08:00
Girish Ramakrishnan
caf1d18250 Add flag for tests to check if platform is ready 2018-10-29 12:46:02 -07:00
Girish Ramakrishnan
bf7707b70b cleanup old base image as well 2018-10-27 13:10:02 -07:00
Girish Ramakrishnan
0307dc5145 Carefully prune addon images
With the docker image prune we ended up removing the redis image
which was ununsed...

This also prevents us from removing images of some app using the
docker addon
2018-10-27 12:01:22 -07:00
Girish Ramakrishnan
e3478c9d13 Use docker cli to cleanup old images 2018-10-25 16:33:12 -07:00
Girish Ramakrishnan
c1db52927e Add a debug 2018-10-24 20:32:03 -07:00
Johannes Zellner
4ab2f8c153 Fix typo 2018-10-17 18:20:39 +02:00
Girish Ramakrishnan
858f03e02d Update redis addon container
Fixes #223
2018-10-16 15:40:40 -07:00
Girish Ramakrishnan
045cfeeb0d Move the addon startup logic to addons.js
Moved the graphite logic to new graphs.js

The settings code now does change notification itself. Over time,
it makes sense to just having settings code do this for everything
and not have this change listener logic. This lets us:
* Maybe the settings can only return based on final handler result
* All dependant modules otherwise have to "init"ed to listen on startup
* Easier to test those handlers without having to actually change the
  setting (since they will now be in "exports" naturally)

Also, maybe someday with this abstraction we can allow apps to have their
own isolated databases etc
2018-10-16 14:40:29 -07:00
Girish Ramakrishnan
bbc121399e Stop containers by name before killing them outright 2018-10-16 13:24:11 -07:00
Girish Ramakrishnan
03d513a3b1 Remove infra upgrade logic
We now upgrade using the dumps of the last backups which are in the
filesystem itself instead of downloading the entire app from the
backup all over.
2018-10-16 11:06:01 -07:00
Girish Ramakrishnan
816fa94555 Upgrade the db addons using dumps when major version changes 2018-10-15 16:14:13 -07:00
Girish Ramakrishnan
bbdafc6a2f pass existing infra information to start funcs 2018-10-15 14:09:13 -07:00
Girish Ramakrishnan
f1da537c80 wait for addons to start using heathcheck routes 2018-10-14 13:26:01 -07:00
Girish Ramakrishnan
23af20ddc9 Update graphite addon 2018-10-08 14:18:13 -07:00
Girish Ramakrishnan
83d56f79c6 lint 2018-09-18 12:22:19 -07:00
Johannes Zellner
eec1fe1272 Start mysql addon with env vars instead of vars.sh file 2018-09-18 20:18:39 +02:00
Girish Ramakrishnan
3c6dffbbc7 Remove old docker images correctly
Old images had no sha256, so it prints "<none>". These images
have to be accessed by tag which uses the ":tag" format whereas
the sha images use the "@sha" format
2018-09-17 16:39:31 -07:00
Johannes Zellner
7e16b96abe Use updated postgres addon 2018-09-17 12:54:05 +02:00
Johannes Zellner
705d0ba7f9 Use restified postgresql addon 2018-09-16 22:56:26 +02:00
Girish Ramakrishnan
705bf3db98 Use only CLOUDRON_* prefixed vars (we reserve these) 2018-09-15 20:15:58 -07:00
Girish Ramakrishnan
391ee00db8 Fix cleanup of old images 2018-09-15 18:41:06 -07:00
Girish Ramakrishnan
9f6621434f Use sha256 to accidentally prevent overwritten tags 2018-09-14 20:20:46 -07:00
Johannes Zellner
1e084e98d1 Change mongodb addon from env vars file to passing directly 2018-09-12 12:56:24 +02:00
Johannes Zellner
f4a76a26af Remove left-over docker proxy start call in platform.js 2018-08-21 15:31:53 +02:00
Johannes Zellner
441fdb81f8 Move docker proxy into its own file 2018-08-13 21:14:17 +02:00