PromucFlow_constructor/deploy/docker
dependabot[bot] 0c0d9a5286
chore: bump nodemailer from 6.7.5 to 6.9.9 in /deploy/docker/fs/opt/appsmith/utils (#30852)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 6.7.5
to 6.9.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nodemailer/nodemailer/releases">nodemailer's
releases</a>.</em></p>
<blockquote>
<h2>v6.9.9</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.8...v6.9.9">6.9.9</a>
(2024-02-01)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>security:</strong> Fix issues described in
GHSA-9h6g-pr28-7cqp. Do not use eternal matching pattern if only a few
occurences are expected (<a
href="dd8f5e8a4d">dd8f5e8</a>)</li>
<li><strong>tests:</strong> Use native node test runner, added code
coverage support, removed grunt (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1604">#1604</a>)
(<a
href="be45c1b299">be45c1b</a>)</li>
</ul>
<h2>v6.9.8</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.7...v6.9.8">6.9.8</a>
(2023-12-30)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>punycode:</strong> do not use native punycode module (<a
href="b4d0e0c7cc">b4d0e0c</a>)</li>
</ul>
<h2>v6.9.7</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.6...v6.9.7">6.9.7</a>
(2023-10-22)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>customAuth:</strong> Do not require user and pass to be set
for custom authentication schemes (fixes <a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1584">#1584</a>)
(<a
href="41d482c3f0">41d482c</a>)</li>
</ul>
<h2>v6.9.6</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.5...v6.9.6">6.9.6</a>
(2023-10-09)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>inline:</strong> Use 'inline' as the default Content
Dispostion value for embedded images (<a
href="db32c93fef">db32c93</a>)</li>
<li><strong>tests:</strong> Removed Node v12 from test matrix as it is
not compatible with the test framework anymore (<a
href="7fe0a608ed">7fe0a60</a>)</li>
</ul>
<h2>v6.9.5</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.4...v6.9.5">6.9.5</a>
(2023-09-06)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>license:</strong> Updated license year (<a
href="da4744e491">da4744e</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md">nodemailer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.8...v6.9.9">6.9.9</a>
(2024-02-01)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>security:</strong> Fix issues described in
GHSA-9h6g-pr28-7cqp. Do not use eternal matching pattern if only a few
occurences are expected (<a
href="dd8f5e8a4d">dd8f5e8</a>)</li>
<li><strong>tests:</strong> Use native node test runner, added code
coverage support, removed grunt (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1604">#1604</a>)
(<a
href="be45c1b299">be45c1b</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.7...v6.9.8">6.9.8</a>
(2023-12-30)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>punycode:</strong> do not use native punycode module (<a
href="b4d0e0c7cc">b4d0e0c</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.6...v6.9.7">6.9.7</a>
(2023-10-22)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>customAuth:</strong> Do not require user and pass to be set
for custom authentication schemes (fixes <a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1584">#1584</a>)
(<a
href="41d482c3f0">41d482c</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.5...v6.9.6">6.9.6</a>
(2023-10-09)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>inline:</strong> Use 'inline' as the default Content
Dispostion value for embedded images (<a
href="db32c93fef">db32c93</a>)</li>
<li><strong>tests:</strong> Removed Node v12 from test matrix as it is
not compatible with the test framework anymore (<a
href="7fe0a608ed">7fe0a60</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v6.9.4...v6.9.5">6.9.5</a>
(2023-09-06)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>license:</strong> Updated license year (<a
href="da4744e491">da4744e</a>)</li>
</ul>
<h2>6.9.4 2023-07-19</h2>
<ul>
<li>Renamed SendinBlue to Brevo</li>
</ul>
<h2>6.9.3 2023-05-29</h2>
<ul>
<li>Specified license identifier (was defined as MIT, actual value
MIT-0)</li>
<li>If SMTP server disconnects with a message, process it and include as
part of the response error</li>
</ul>
<h2>6.9.2 2023-05-11</h2>
<ul>
<li>Fix uncaught exception on invalid attachment content payload</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5a2e10f454"><code>5a2e10f</code></a>
chore(master): release 6.9.9 [skip-ci] (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1606">#1606</a>)</li>
<li><a
href="dd8f5e8a4d"><code>dd8f5e8</code></a>
fix(security): Fix issues described in GHSA-9h6g-pr28-7cqp. Do not use
eterna...</li>
<li><a
href="2c2b46ae4c"><code>2c2b46a</code></a>
chore: do not use caret in version specifier</li>
<li><a
href="be45c1b299"><code>be45c1b</code></a>
fix(tests): Use native node test runner, added code coverage support,
removed...</li>
<li><a
href="4233f6f89e"><code>4233f6f</code></a>
chore(master): release 6.9.8 [skip-ci] (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1605">#1605</a>)</li>
<li><a
href="09d502f979"><code>09d502f</code></a>
chore: removed double file</li>
<li><a
href="b4d0e0c7cc"><code>b4d0e0c</code></a>
fix(punycode): do not use native punycode module</li>
<li><a
href="8376c024f8"><code>8376c02</code></a>
Test new github notice syntax for README</li>
<li><a
href="bc46a3b7d4"><code>bc46a3b</code></a>
Updated stale github action</li>
<li><a
href="78bdaf8c9e"><code>78bdaf8</code></a>
chore: remove redundant AWS SDK for JavaScript v2 (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1593">#1593</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nodemailer/nodemailer/compare/v6.7.5...v6.9.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nodemailer&package-manager=npm_and_yarn&previous-version=6.7.5&new-version=6.9.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 11:56:19 +05:30
..
fs chore: bump nodemailer from 6.7.5 to 6.9.9 in /deploy/docker/fs/opt/appsmith/utils (#30852) 2024-02-02 11:56:19 +05:30
images docs: Fat container documentation fixes (#7207) 2021-09-14 19:01:06 +05:30
route-tests fix: Allow incoming TLS traffic without restricting the domain (#30571) 2024-01-24 15:19:17 +05:30
base.dockerfile chore: Remove pip and git from base image (#30318) 2024-01-22 09:15:56 +05:30
build-multi-arch.md feat: Support building Docker image for ARM arch (#7832) 2021-09-29 14:33:27 +05:30
build-mutil-arch.sh feat: Support building Docker image for ARM arch (#7832) 2021-09-29 14:33:27 +05:30
docker-compose.yml chore: Use new Docker image for dev-time server (#25609) 2023-07-24 09:56:30 +05:30
README.md chore: Remove unneeded exposing of 9001 port (#30499) 2024-01-22 15:06:08 +05:30
run-test.sh Fix fat image not being pushed to DockerHub 2021-12-17 06:42:17 +05:30

Appsmith Docker Image

The Appsmith Docker image is built with all the components required for it to run, within a single Docker container. Files in this directory make up for the scripts and template files needed for building the image.

You may choose to use the Appsmith cloud instance (at app.appsmith.com) or start your own using this image.

Appsmith Cloud

The fastest way to get started with appsmith is using our cloud-hosted version. It's as easy as

  1. Create an Account
  2. Docs on Building a UI

Self Host

The following subsections describe how you can get started with your own instance of Appsmith.

1. Prerequisites

Ensure docker and docker-compose are installed and available for starting containers:

You may verify the installation by running docker --version and docker-compose --version. The output should roughly be something like below:

$ docker --version
Docker version 20.10.7, build f0df350
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

2. Docker compose configuration

Create a folder called appsmith (or some other name that you like), which will serve as our installation folder. Inside this folder, create a docker-compose.yml file and copy the following content into it:

version: "3"

services:
  appsmith:
    image: appsmith/appsmith-ce
    container_name: appsmith-ce
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./stacks:/appsmith-stacks
    restart: unless-stopped
  #   # Uncomment the lines below to enable auto-update
  #   labels:
  #     com.centurylinklabs.watchtower.enable: "true"

  # auto_update:
  #   image: containrrr/watchtower
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock
  #   # Update check interval in seconds.
  #   command: --schedule "0 0 * ? * *" --label-enable --cleanup
  #   restart: unless-stopped


Note: To enable auto-update for Appsmith, please uncomment all the commented lines in the docker-compose file.

After saving this file, cd to the folder that contains this file and run the following command to start Appsmith:

docker-compose up -d

This command may take a few minutes to download the docker image and initialize the application. Appsmith should soon be available at http://localhost.

You can check if application is running correctly by running docker ps or docker-compose ps (running docker-compose will require you to be in the directory containing the docker-compose.yml file to work).

$ docker ps
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                      NAMES
3b8f2c9638d0        appsmith/appsmith          "/opt/appsmith/entrypoint.sh"   17 minutes ago      Up 17 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   appsmith

You can also use the Supervisord UI to monitor and manage the different processes inside the container. This is discussed further below.

Custom Domain

To make Appsmith available on a custom domain, please update your domain's DNS records to point to the instance running Appsmith. Most domain registrars / DNS-providers have documentation on how you can do this yourself.

Custom SSL Certificate

In our container, we support to generate a free SSL certificate If you have your owned certificate, please follow these steps to use it inside the container.

  • Firstly, please rename your certificate file as fullchain.pem and key file as privkey.pem
  • Then, copy these files into the sub-directory <mounting-directory>/ssl/ (Note: Please change <mounting-directory> by the mounting volume directory in the docker-compose.yml. Default is ./stacks)
  • Restart the container using docker restart appsmith

The container will check the certificate files in the folder <mounting-directory>/ssl and use them if they are existed.

Note: In case of the certificate files have different name from fullchain.pem and privkey.pem, it will be considered as missing custom certificate and auto-provisioning the certificate by Let's Encrypt

Instance Management Utilities

The image includes an appsmithctl command to help with the management and maintenance of your instance. The following subsections describe what's available.

Export database

The following command can be used to take a backup dump of Appsmith's database. This can be restored onto another instance using the import command (discussed below) to restore all data.

Before running this, ensure you are in the directory where docker-compose.yml is located.

docker-compose exec appsmith-ce appsmithctl export_db

The output file will be stored in the container directory /appsmith-stacks/data/backup/appsmith-data.archive. Thanks to the volume configuration in the docker-compose.yml file, it should be available on your host machine at ./stacks/data/backup/appsmith-data.archive.

If your volume configuration is different or unavailable, you can use the following command to copy the archive file to your host disk:

docker-compose cp appsmith-ce:/appsmith-stacks/data/backup/appsmith-data.archive .

Note that you may want to save the docker.env file in addition to this archive file, if you intend to be able to reproduce this environment elsewhere, or in case of a disaster. This file can be copied out of the container with the following command:

docker-compose cp appsmith-ce:/appsmith-stacks/configuration/docker.env .

Be sure to keep this file safe, since it contains information that can be used to decrypt datasource information from the database archive.

Import database

The following command can restore backup archive, that was produced by the export command (discussed above).

First, copy the archive file into the container using the following command:

docker-compose cp ./appsmith-data.archive appsmith-ce:/appsmith-stacks/data/restore/

Second, run the following command to import data from this file:

docker-compose exec appsmith-ce appsmithctl import_db

Note that when you restore, you may also want to copy a docker.env from the original instance into this one. You can use the following command to do this (assuming you are in the installation folder and docker.env exists in the same folder):

docker-compose cp ./docker.env appsmith-ce:/appsmith-stacks/configuration/

This will need a restart of the Appsmith server, which can be done using the following command:

docker-compose exec appsmith-ce supervisorctl restart backend

Migrate To New Server

To migrate a running container to a new server or other machine, you can use the following migrate command and replace the <user> and <new-server-ip-address> by the user and IP address of the destination server or machine.

docker exec appsmith-ce appsmithctl migrate <user>@<new-server-ip-address>

This command will migrate all data and configuration of running container on source machine to destination machine and start a new container on destination machine.

Supervisor

The container runs multiple processes, including the Appsmith server, Nginx, MongoDB etc., inside a single Docker container. These processes are started and managed by supervisord.

Supervisord comes with a web interface for managing the various processes, available at http://localhost/supervisor/, as well as a command line interface towards the same goal.

Here's a screenshot of the web interface listing all the processes managed:

The command line interface can also be used to perform operations like restarting the Appsmith server, or restarting Nginx etc. For example, the following command (run in the installation folder) can be used to get a status of all running processes:

docker-compose exec appsmith-ce supervisorctl status

Or to view the last few lines of stderr output of one of the processes:

docker-compose exec appsmith-ce supervisorctl tail backend stderr

To learn more, please refer to Supervisor's documentation on what actions are available to be performed by the command line interface.

Troubleshooting

If you encounter any errors during this process, please reach out to support@appsmith.com or join our Discord Server and reach out on the #support channel.