Exim container still running?

I am trying to use AWS Simple Email Service (SES) instead of Exim.

Even after setting up RUN_SMTP=false, saving the new config and rebuilding the openedx image with my fork, I’ve noticed the exim container is still launched.

Is that normal? Is there a way to completely stop it from relaunching every time?

Bear in my mind that I am still able to do send emails through AWS SES. I am simply concerned that a container is running for no reason… Or is there a reason?

In that case, rebuilding the Docker image will not have any impact on the running container. It will be stopped and not restart by itself the next time you run quickstart or tutor local stop && tutor local start. In the meantime, I suggest you stop manually with tutor local stop smtp or docker stop yourcontainerid.

1 Like

Unfortunately, it still restarts it even after I tutor local stop && tutor local start.

I am assuming at this point that some of the modifications we made in our fork are incompatible with quickstart because I cannot run quickstart after I started building the Docker image with our fork. It’s something I will look at later on in my Native to Tutor migration adventures. @regis I should at one point send you the error messages I get when I try to move back from our fork to the “standard” release. But not now…

Let’s focus on the SMTP issue for now. Let me get this straight:

tutor local stop
docker ps # check that no exim container is running. If there is, stop it with 'docker stop'
tutor config save --set RUN_SMTP=false
tutor config printvalue RUN_SMTP # just to check: should print "false"
tutor local start -d
docker ps | grep smtp # this should not print anything

Nope…

ubuntu@ip-10-0-0-220:~$ tutor local stop
docker-compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.override.yml --project-name tutor_local stop
Stopping tutor_local_cms-worker_1       ... done
Stopping tutor_local_cms_1              ... done
Stopping tutor_local_lms-worker_1       ... done
Stopping tutor_local_lms_1              ... done
Stopping tutor_local_ecommerce-worker_1 ... done
Stopping tutor_local_ecommerce_1        ... done
Stopping tutor_local_discovery_1        ... done
Stopping tutor_local_notes_1            ... done
Stopping tutor_local_xqueue_1           ... done
Stopping tutor_local_xqueue-consumer_1  ... done
Stopping tutor_local_mysql_1            ... done
Stopping tutor_local_mfe_1              ... done
Stopping tutor_local_forum_1            ... done
Stopping tutor_local_elasticsearch_1    ... done
Stopping tutor_local_mongodb_1          ... done
Stopping tutor_local_redis_1            ... done
Stopping tutor_local_smtp_1             ... done
Stopping tutor_local_caddy_1            ... done
ubuntu@ip-10-0-0-220:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
ubuntu@ip-10-0-0-220:~$ tutor config save --set RUN_SMTP=false
Configuration saved to /home/ubuntu/.local/share/tutor/config.yml
Environment generated in /home/ubuntu/.local/share/tutor/env
ubuntu@ip-10-0-0-220:~$ tutor config printvalue RUN_SMTP
False
ubuntu@ip-10-0-0-220:~$ tutor local start -d
docker-compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.override.yml --project-name tutor_local up --remove-orphans --build -d
Building mfe
Step 1/150 : FROM docker.io/node:12-bullseye-slim AS base
 ---> 15c901bc18f8
Step 2/150 : RUN apt update   && apt install -y git     gcc git libgl1 libxi6 make
 ---> Using cache
 ---> 1d83461c7bd8
Step 3/150 : RUN mkdir -p /openedx/app /openedx/env
 ---> Using cache
 ---> 4ebc4c528a5e
Step 4/150 : WORKDIR /openedx/app
 ---> Using cache
 ---> 12c407f8cc74
Step 5/150 : ENV PATH ./node_modules/.bin:${PATH}
 ---> Using cache
 ---> 6359ff123797

Step 6/150 : FROM base AS i18n
 ---> 6359ff123797
Step 7/150 : COPY ./i18n /openedx/i18n
 ---> Using cache
 ---> 2b661829f7be
Step 8/150 : RUN chmod a+x /openedx/i18n/*.js
 ---> Using cache
 ---> bf8b36f0f719
Step 9/150 : RUN echo "copying i18n data"   && mkdir -p /openedx/i18n/orders   && mkdir -p /openedx/i18n/payment   && mkdir -p /openedx/i18n/account   && mkdir -p /openedx/i18n/gradebook   && mkdir -p /openedx/i18n/learning   && mkdir -p /openedx/i18n/profile   echo "done."
 ---> Using cache
 ---> 0acd8fa9ae93

Step 10/150 : FROM base AS orders-src
 ---> 6359ff123797
Step 11/150 : RUN git clone https://github.com/edx/frontend-app-ecommerce --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> d7cad341e222
Step 12/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> 808eb11ab8b3

Step 13/150 : FROM base AS orders-i18n
 ---> 6359ff123797
Step 14/150 : COPY --from=orders-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 611e60895c04
Step 15/150 : COPY --from=i18n /openedx/i18n/orders /openedx/i18n/orders
 ---> Using cache
 ---> 974bca8ab394
Step 16/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> d486c38df6e1
Step 17/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/orders /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 21d2eefcf04a

Step 18/150 : FROM base AS orders-dev
 ---> 6359ff123797
Step 19/150 : COPY --from=orders-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> 903ad4542ecf
Step 20/150 : COPY --from=orders-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> a196003e8a19
Step 21/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> 802789adeef1
Step 22/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> 35fb436f92d0
Step 23/150 : COPY --from=orders-src /openedx/app /openedx/app
 ---> Using cache
 ---> 217066018a92
Step 24/150 : COPY --from=orders-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 39a5af255537
Step 25/150 : ENV PUBLIC_PATH='/orders/'
 ---> Using cache
 ---> af54b6e8d486
Step 26/150 : EXPOSE 1996
 ---> Using cache
 ---> 6b0b1b8f8db8
Step 27/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> 542c67975cc2

Step 28/150 : FROM orders-dev AS orders
 ---> 542c67975cc2
Step 29/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> 866f5ec96816
Step 30/150 : RUN touch /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> ffaf3e3fd9fc
Step 31/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> c887d7a2f639

Step 32/150 : FROM base AS payment-src
 ---> 6359ff123797
Step 33/150 : RUN git clone https://github.com/edx/frontend-app-payment --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> 44876a6bba6a
Step 34/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> 49c2aa6c678e

Step 35/150 : FROM base AS payment-i18n
 ---> 6359ff123797
Step 36/150 : COPY --from=payment-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 9d74dcc6ad7b
Step 37/150 : COPY --from=i18n /openedx/i18n/payment /openedx/i18n/payment
 ---> Using cache
 ---> 9f2f5cfef0ba
Step 38/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> 3affde11c768
Step 39/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/payment /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 4ad39a1b621c

Step 40/150 : FROM base AS payment-dev
 ---> 6359ff123797
Step 41/150 : COPY --from=payment-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> 5e2a974c3d91
Step 42/150 : COPY --from=payment-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> 7a26bfd09b4c
Step 43/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> 34d3f14b6b18
Step 44/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> e30f0a99580d
Step 45/150 : COPY --from=payment-src /openedx/app /openedx/app
 ---> Using cache
 ---> 2e782019aecd
Step 46/150 : COPY --from=payment-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 001f8df67587
Step 47/150 : ENV PUBLIC_PATH='/payment/'
 ---> Using cache
 ---> 1e57f9a0ac51
Step 48/150 : EXPOSE 1998
 ---> Using cache
 ---> f7bca15766bd
Step 49/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> abe2e069965b

Step 50/150 : FROM payment-dev AS payment
 ---> abe2e069965b
Step 51/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> 3095c5ccf0bf
Step 52/150 : RUN touch /openedx/env/production.override   && echo "CURRENCY_COOKIE_NAME='edx-price-l10n'" >> /openedx/env/production.override   && echo "CYBERSOURCE_URL='https://testsecureacceptance.cybersource.com/silent/pay'" >> /openedx/env/production.override   && echo "SUPPORT_URL='https://cours-virginie.edulib.org/support'" >> /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> e166ac1d5600
Step 53/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> 515bc7c1ebe1

Step 54/150 : FROM base AS account-src
 ---> 6359ff123797
Step 55/150 : RUN git clone https://github.com/edx/frontend-app-account --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> a1caf6385ce9
Step 56/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> 40b1dc983fb3

Step 57/150 : FROM base AS account-i18n
 ---> 6359ff123797
Step 58/150 : COPY --from=account-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 255f69684b93
Step 59/150 : COPY --from=i18n /openedx/i18n/account /openedx/i18n/account
 ---> Using cache
 ---> c310653c59ca
Step 60/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> 1e31542986ba
Step 61/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/account /openedx/app/src/i18n/messages
 ---> Using cache
 ---> a0018f76947d

Step 62/150 : FROM base AS account-dev
 ---> 6359ff123797
Step 63/150 : COPY --from=account-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> 7f273df0dbba
Step 64/150 : COPY --from=account-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> 8fac7533312d
Step 65/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> 7888a4937e63
Step 66/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> 882443042476
Step 67/150 : COPY --from=account-src /openedx/app /openedx/app
 ---> Using cache
 ---> ef30a24c50a0
Step 68/150 : COPY --from=account-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 2af027084701
Step 69/150 : ENV PUBLIC_PATH='/account/'
 ---> Using cache
 ---> 98230fd6b8cb
Step 70/150 : EXPOSE 1997
 ---> Using cache
 ---> b80da748774f
Step 71/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> d20c58e1d29a

Step 72/150 : FROM account-dev AS account
 ---> d20c58e1d29a
Step 73/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> 39cf0d49cd73
Step 74/150 : RUN touch /openedx/env/production.override   && echo "COACHING_ENABLED=''" >> /openedx/env/production.override   && echo "ENABLE_DEMOGRAPHICS_COLLECTION=''" >> /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> eff971a8173f
Step 75/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> fe8f65f20760

Step 76/150 : FROM base AS gradebook-src
 ---> 6359ff123797
Step 77/150 : RUN git clone https://github.com/edx/frontend-app-gradebook --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> 0176140cbb31
Step 78/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> 9c4ab5d61505

Step 79/150 : FROM base AS gradebook-i18n
 ---> 6359ff123797
Step 80/150 : COPY --from=gradebook-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 089b9063b062
Step 81/150 : COPY --from=i18n /openedx/i18n/gradebook /openedx/i18n/gradebook
 ---> Using cache
 ---> eb2eb769cf3d
Step 82/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> 449d38744c12
Step 83/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/gradebook /openedx/app/src/i18n/messages
 ---> Using cache
 ---> ae89377e4187

Step 84/150 : FROM base AS gradebook-dev
 ---> 6359ff123797
Step 85/150 : COPY --from=gradebook-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> 8acc72a7ef42
Step 86/150 : COPY --from=gradebook-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> 13be01e1cfe5
Step 87/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> 27e813f792c8
Step 88/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> faf1a2abe986
Step 89/150 : COPY --from=gradebook-src /openedx/app /openedx/app
 ---> Using cache
 ---> d2d704e26613
Step 90/150 : COPY --from=gradebook-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 41e6bfdf9c82
Step 91/150 : ENV PUBLIC_PATH='/gradebook/'
 ---> Using cache
 ---> c99d9d1635a5
Step 92/150 : EXPOSE 1994
 ---> Using cache
 ---> 9a3ee3c198e5
Step 93/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> 8d27fd2e973c

Step 94/150 : FROM gradebook-dev AS gradebook
 ---> 8d27fd2e973c
Step 95/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> 12e384da3b73
Step 96/150 : RUN touch /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> f5e4450aaf21
Step 97/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> 486f270fa0e2

Step 98/150 : FROM base AS learning-src
 ---> 6359ff123797
Step 99/150 : RUN git clone https://github.com/edx/frontend-app-learning --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> 716f67f319d3
Step 100/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> 87f95934a722

Step 101/150 : FROM base AS learning-i18n
 ---> 6359ff123797
Step 102/150 : COPY --from=learning-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 9f0fae90cb5f
Step 103/150 : COPY --from=i18n /openedx/i18n/learning /openedx/i18n/learning
 ---> Using cache
 ---> ef2f6758e94d
Step 104/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> 201ec5c4f2f7
Step 105/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/learning /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 09b55d130397

Step 106/150 : FROM base AS learning-dev
 ---> 6359ff123797
Step 107/150 : COPY --from=learning-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> c37c7423ba90
Step 108/150 : COPY --from=learning-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> 9087d0e0efe1
Step 109/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> c6529613a884
Step 110/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> 2a8421a62c7a
Step 111/150 : COPY --from=learning-src /openedx/app /openedx/app
 ---> Using cache
 ---> 0f056385d96a
Step 112/150 : COPY --from=learning-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 79bb3d077177
Step 113/150 : ENV PUBLIC_PATH='/learning/'
 ---> Using cache
 ---> 4b4e0641b568
Step 114/150 : EXPOSE 2000
 ---> Using cache
 ---> d8fc01afcace
Step 115/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> 6a1b7514ff8e

Step 116/150 : FROM learning-dev AS learning
 ---> 6a1b7514ff8e
Step 117/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> ef044a94dbb2
Step 118/150 : RUN touch /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> 16345f613e12
Step 119/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> 95ec813a65eb

Step 120/150 : FROM base AS profile-src
 ---> 6359ff123797
Step 121/150 : RUN git clone https://github.com/edx/frontend-app-profile --branch open-release/maple.2 --depth 1 .
 ---> Using cache
 ---> 714a7e5e952e
Step 122/150 : RUN stat /openedx/app/src/i18n/messages 2> /dev/null || (echo "missing messages folder" && mkdir -p /openedx/app/src/i18n/messages)
 ---> Using cache
 ---> e8638ef65e55

Step 123/150 : FROM base AS profile-i18n
 ---> 6359ff123797
Step 124/150 : COPY --from=profile-src /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 2c86d7b56f6e
Step 125/150 : COPY --from=i18n /openedx/i18n/profile /openedx/i18n/profile
 ---> Using cache
 ---> 6119ae832b92
Step 126/150 : COPY --from=i18n /openedx/i18n/i18n-merge.js /openedx/i18n/i18n-merge.js
 ---> Using cache
 ---> 91923a240472
Step 127/150 : RUN /openedx/i18n/i18n-merge.js /openedx/app/src/i18n/messages /openedx/i18n/profile /openedx/app/src/i18n/messages
 ---> Using cache
 ---> f493678d3cd1

Step 128/150 : FROM base AS profile-dev
 ---> 6359ff123797
Step 129/150 : COPY --from=profile-src /openedx/app/package.json /openedx/app/package.json
 ---> Using cache
 ---> 2f79802e6e07
Step 130/150 : COPY --from=profile-src /openedx/app/package-lock.json /openedx/app/package-lock.json
 ---> Using cache
 ---> d05de7fc52d7
Step 131/150 : ARG NPM_REGISTRY=https://registry.npmjs.org/
 ---> Using cache
 ---> 8466eeec3823
Step 132/150 : RUN npm install --no-audit --no-fund --registry=$NPM_REGISTRY   && rm -rf ~/.npm
 ---> Using cache
 ---> baf59ed304de
Step 133/150 : COPY --from=profile-src /openedx/app /openedx/app
 ---> Using cache
 ---> ec96d40e7e7d
Step 134/150 : COPY --from=profile-i18n /openedx/app/src/i18n/messages /openedx/app/src/i18n/messages
 ---> Using cache
 ---> 4d77a058331a
Step 135/150 : ENV PUBLIC_PATH='/profile/'
 ---> Using cache
 ---> c7ef35b20b5a
Step 136/150 : EXPOSE 1995
 ---> Using cache
 ---> b088cbfc48dd
Step 137/150 : CMD ["npm", "run", "start"]
 ---> Using cache
 ---> 29c4cef03e2c

Step 138/150 : FROM profile-dev AS profile
 ---> 29c4cef03e2c
Step 139/150 : COPY ./env/production /openedx/env/production
 ---> Using cache
 ---> 550cbd52b938
Step 140/150 : RUN touch /openedx/env/production.override   && echo "done setting production overrides"
 ---> Using cache
 ---> 3f36dafe921a
Step 141/150 : RUN bash -c "set -a && source /openedx/env/production && source /openedx/env/production.override && npm run build"
 ---> Using cache
 ---> 864e7f698188

Step 142/150 : FROM docker.io/caddy:2.4.6 as production
 ---> 439af64db489
Step 143/150 : RUN mkdir -p /openedx/dist
 ---> Using cache
 ---> 5f0181b873e1
Step 144/150 : COPY --from=orders /openedx/app/dist /openedx/dist/orders
 ---> Using cache
 ---> c31ffdbc929f
Step 145/150 : COPY --from=payment /openedx/app/dist /openedx/dist/payment
 ---> Using cache
 ---> 62c21b23ff0b
Step 146/150 : COPY --from=account /openedx/app/dist /openedx/dist/account
 ---> Using cache
 ---> fc99e9ac9a9a
Step 147/150 : COPY --from=gradebook /openedx/app/dist /openedx/dist/gradebook
 ---> Using cache
 ---> 7d5a54697831
Step 148/150 : COPY --from=learning /openedx/app/dist /openedx/dist/learning
 ---> Using cache
 ---> d1010ad5e88a
Step 149/150 : COPY --from=profile /openedx/app/dist /openedx/dist/profile
 ---> Using cache
 ---> 0398f376a5e6
Step 150/150 : COPY ./Caddyfile /etc/caddy/Caddyfile
 ---> Using cache
 ---> bfa6a7fedb49

Successfully built bfa6a7fedb49
Successfully tagged overhangio/openedx-mfe:13.0.2
Starting tutor_local_cms-permissions_1           ... done
Starting tutor_local_mongodb-permissions_1       ... done
Starting tutor_local_mysql_1                     ... done
Starting tutor_local_notes-permissions_1         ... done
Starting tutor_local_smtp_1                      ... done
Starting tutor_local_redis-permissions_1         ... done
Starting tutor_local_caddy_1                     ... done
Starting tutor_local_mfe_1                       ... done
Starting tutor_local_xqueue-permissions_1        ... done
Starting tutor_local_elasticsearch-permissions_1 ... done
Starting tutor_local_lms-permissions_1           ... done
Starting tutor_local_mysql-permissions_1         ... done
Starting tutor_local_xqueue-consumer_1           ... done
Starting tutor_local_xqueue_1                    ... done
Starting tutor_local_mongodb_1                   ... done
Starting tutor_local_redis_1                     ... done
Starting tutor_local_notes_1                     ... done
Starting tutor_local_elasticsearch_1             ... done
Starting tutor_local_forum_1                     ... done
Starting tutor_local_lms_1                       ... done
Starting tutor_local_discovery_1                 ... done
Starting tutor_local_lms-worker_1                ... done
Starting tutor_local_cms_1                       ... done
Starting tutor_local_ecommerce_1                 ... done
Starting tutor_local_cms-worker_1                ... done
Starting tutor_local_ecommerce-worker_1          ... done
ubuntu@ip-10-0-0-220:~$ docker ps | grep smtp
fec1aa184782   devture/exim-relay:4.94.2-r0-4               "/sbin/tini -- exim …"   2 weeks ago   Up About a minute   8025/tcp                                                                             tutor_local_smtp_1
ubuntu@ip-10-0-0-220:~$

Here lies the error… It should be “false”, and not “False” :sweat_smile: When you run tutor config save --set RUN_SMTP=false then “false” is interpreted as a boolean, but “False” is interpreted as a string, which evaluates to true within if RUN_SMTP ... conditions.

1 Like

But I do have

**ubuntu@ip-10-0-0-220**:**~**$ grep RUN_SMTP ./.local/share/tutor/config.yml

**RUN_SMTP**: false

**ubuntu@ip-10-0-0-220**:**~**$ tutor config printvalue RUN_SMTP

False

So, is the problem on my side or on Tutor’s side? I am confused.

My bad, your RUN_SMTP setting is correct.

It looks like there is some dark magic going on on your computer. Can you check that the smtp container is actually absent from the docker-compose.yml file?

grep smtp $(tutor config printroot)/env/local/docker-compose.yml

Then, what is the output of:

docker inspect fec1aa184782 # replace this ID by the smtp container id produced by "docker ps"

grep returns nothing

docker inspect fec1aa184782
[
    {
        "Id": "fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479",
        "Created": "2022-02-25T07:35:27.368637409Z",
        "Path": "/sbin/tini",
        "Args": [
            "--",
            "exim",
            "-bdf",
            "-q15m"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1472,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-03-14T18:21:47.833721784Z",
            "FinishedAt": "2022-03-14T18:21:01.653493962Z"
        },
        "Image": "sha256:cb188b12e3f7bec60c6f87c9a34152405d9ff2a3d3dd795a1847593c109a9d86",
        "ResolvConfPath": "/var/lib/docker/containers/fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479/hostname",
        "HostsPath": "/var/lib/docker/containers/fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479/hosts",
        "LogPath": "/var/lib/docker/containers/fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479/fec1aa184782c1edb46bcceedb587115e686074f984c8fafc7966bce3519e479-json.log",
        "Name": "/tutor_local_smtp_1",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "tutor_local_default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "unless-stopped",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/c64bbc89fe8535b52d725f9b843038486ddf3012b09767ebd31da2ada34d5c9b-init/diff:/var/lib/docker/overlay2/4fb6318df7f092bc87fe7dd5ee0768eeb342aabf08ee4a58af7478366a0d3160/diff:/var/lib/docker/overlay2/f2dc08b4fc3e1eb04749772d9b97267f140783e9b71b0a002ac042d0acd2784d/diff:/var/lib/docker/overlay2/4a22decc057e1dd962d95e02c9b5ac202634cbcafcdc1c915f92d2f1cc037d6a/diff",
                "MergedDir": "/var/lib/docker/overlay2/c64bbc89fe8535b52d725f9b843038486ddf3012b09767ebd31da2ada34d5c9b/merged",
                "UpperDir": "/var/lib/docker/overlay2/c64bbc89fe8535b52d725f9b843038486ddf3012b09767ebd31da2ada34d5c9b/diff",
                "WorkDir": "/var/lib/docker/overlay2/c64bbc89fe8535b52d725f9b843038486ddf3012b09767ebd31da2ada34d5c9b/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "fec1aa184782",
            "Domainname": "",
            "User": "100:101",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8025/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "HOSTNAME=cours-virginie.edulib.org",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LOCAL_DOMAINS=@",
                "RELAY_FROM_HOSTS=10.0.0.0/8:172.16.0.0/12:192.168.0.0/16",
                "RELAY_TO_DOMAINS=*",
                "RELAY_TO_USERS=",
                "DISABLE_SENDER_VERIFICATION=",
                "SMARTHOST=",
                "SMTP_PASSWORD=",
                "SMTP_USERDOMAIN=",
                "SMTP_USERNAME="
            ],
            "Cmd": [
                "exim",
                "-bdf",
                "-q15m"
            ],
            "Image": "docker.io/devture/exim-relay:4.94.2-r0-4",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/sbin/tini",
                "--"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "61546c5a81082cf8a8022e7c367ecdb357646a67305c96ceab66bb721f2bc0b3",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "tutor_local",
                "com.docker.compose.project.config_files": "/home/ubuntu/.local/share/tutor/env/local/docker-compose.yml,/home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml",
                "com.docker.compose.project.working_dir": "/home/ubuntu/.local/share/tutor/env/local",
                "com.docker.compose.service": "smtp",
                "com.docker.compose.version": "1.25.0"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "3fac7f1424149b6ac053454cc14a9693f08225c8c37786b762e5ee5ee05c4851",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8025/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/3fac7f142414",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "tutor_local_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "smtp",
                        "fec1aa184782"
                    ],
                    "NetworkID": "cb9222eca7be660e55e6d5578d22cf14f69d772b5b40f3d1ad3cb346246eb04c",
                    "EndpointID": "5064ecddb7297132d5f91684ad9c5a56bb98f1dbd466201ff355773c68c5c4a3",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.7",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:07",
                    "DriverOpts": null
                }
            }
        }
    }
]

The docker-compose file does not have any trace of that smtp container, but the container has tags that indicate that it was launched with that docker-compose.yml file… This doesn’t make any sense but I’ve seen it happen. Please attempt to stop the platform and make sure that all the containers are deleted with:

tutor local dc down
tutor local start -d

Is the smtp container still up after these two commands?

Hi @sambapete ,

These are some steps that you might try

  1. If you have already customized tutor plugin, ensure you installed plugin tutor from your own repository in your local machine, do not using python library from tutor · PyPI by using pip list to check. Do this step to avoid conflict version.
  2. In the source of tutor, let search with string smtp: or devture/exim-relay to see any docker compose yaml file might still retain it. For example, while doing development, you might put it in docker.compose.override.yml or docker.compose.prod.yml
  3. Try to stop all containers then docker container prune -f to remove orphan containers. Then reboot it
1 Like

Sorry for the late reply. It’s still up.

I have installed the binary version of Tutor.

None of my local plugins include smtp.

Good call. I had inadvertently left smtp in my docker-compose.override.yml file. It was using it from there. Thanks.