I found the '--network host' option in Docker, so now we don't have to launch the...
authorArt Cancro <ajc@citadel.org>
Thu, 5 Aug 2021 19:29:36 +0000 (15:29 -0400)
committerArt Cancro <ajc@citadel.org>
Thu, 5 Aug 2021 19:29:36 +0000 (15:29 -0400)
Dockerfile
ctdlvisor.c
run-citadel.sh

index 96547e0b086c3be3a05ba8f92b4190eab3e2df1f..0f81cbbd107c7551c222156ac2b0b5fa44844020 100644 (file)
@@ -23,4 +23,4 @@ RUN sh -c 'cd /tmp/ctdl_build && cc ctdlvisor.c -o /usr/local/bin/ctdlvisor'
 EXPOSE 25 80 110 119 143 443 465 504 563 587 993 995 2020 5222
 
 # Let's go!
-ENTRYPOINT /usr/local/bin/ctdlvisor
+ENTRYPOINT ["/usr/local/bin/ctdlvisor"]
index 086f1a64fbacc6bfdc269e4249386ad474a8de9d..18b420207ce0cc12f4440666e5e73f0027c93426 100644 (file)
@@ -93,7 +93,7 @@ pid_t start_citadel() {
        pid_t pid = fork();
        if (pid == 0) {
                fprintf(stderr, "ctdlvisor: executing citserver\n");
-               //detach_from_tty();
+               detach_from_tty();
                execlp("/usr/local/citadel/citserver", "citserver", "-x9", "-h", CTDL_DIR, NULL);
                exit(errno);
        }
@@ -108,7 +108,7 @@ pid_t start_webcit() {
        pid_t pid = fork();
        if (pid == 0) {
                fprintf(stderr, "ctdlvisor: executing webcit (http)\n");
-               //detach_from_tty();
+               detach_from_tty();
                execlp("/usr/local/webcit/webcit", "webcit", "-x9", "-p", "80", "uds", CTDL_DIR, NULL);
                exit(errno);
        }
@@ -123,7 +123,7 @@ pid_t start_webcits() {
        pid_t pid = fork();
        if (pid == 0) {
                fprintf(stderr, "ctdlvisor: executing webcit (https)\n");
-               //detach_from_tty();
+               detach_from_tty();
                execlp("/usr/local/webcit/webcit", "webcit", "-x9", "-s", "-p", "443", "uds", CTDL_DIR, NULL);
                exit(errno);
        }
@@ -143,18 +143,18 @@ void main_loop(void) {
                who_exited = waitpid(-1, &status, 0);
                fprintf(stderr, "ctdlvisor: pid=%d exited, status=%d, exitcode=%d\n", who_exited, status, WEXITSTATUS(status));
 
-               // A *deliberate* exit of citserver will cause ctdlvisor to shut the whole AppImage down.
+               // A *deliberate* exit of citserver will cause ctdlvisor to shut the whole container down.
                // If it crashes, however, we will start it back up.
                if (who_exited == citserver_pid) {
                        citserver_exit_code = WEXITSTATUS(status);
                        if ((WIFEXITED(status)) && (citserver_exit_code == 0)) {
-                               fprintf(stderr, "ctdlvisor: citserver exited normally - ending AppImage session\n");
+                               fprintf(stderr, "ctdlvisor: citserver exited normally - ending container session\n");
                                shutting_down = 1;
                                kill(webcit_pid, SIGTERM);
                                kill(webcits_pid, SIGTERM);
                        }
                        else if ((WIFEXITED(status)) && (citserver_exit_code >= 101) && (citserver_exit_code <= 109)) {
-                               fprintf(stderr, "ctdlvisor: citserver exited intentionally - ending AppImage session\n");
+                               fprintf(stderr, "ctdlvisor: citserver exited intentionally - ending container session\n");
                                shutting_down = 1;
                                kill(webcit_pid, SIGTERM);
                                kill(webcits_pid, SIGTERM);
index 486a2e4a277fc22df95ea47b35c065f45b57cf8f..41192966c46c0873758afe33425787e06aa55efa 100755 (executable)
@@ -5,22 +5,18 @@
 # The container expects a persistent volume called "citadel-data" in which it will keep everything.
 # The remainder of the container is ephermal and can be deleted at any time.
 
-docker run \
+exec docker run \
        --name citadel \
        -it \
        --rm \
-       -p 25:25 \
-       -p 80:80 \
-       -p 110:110 \
-       -p 119:119 \
-       -p 143:143 \
-       -p 443:443 \
-       -p 465:465 \
-       -p 504:504 \
-       -p 563:563 \
-       -p 587:587 \
-       -p 993:993 \
-       -p 995:995 \
-       -p 5222:5222 \
+       --network host \
        --mount type=bind,source=/root/citadel/citadel,target=/citadel-data \
        $*
+
+#      Explanation of the above options:
+#
+#      --name citadel                  Create a container named "citadel"
+#      -it                             Run in the foreground
+#      --rm                            Delete the container when it exits
+#      --network host                  Bind directly to the host's network ports instead of creating a separate interface
+#      --mount                         This identifies where on the host our persistent Citadel database is found