Deploys fail, especially if you just started developing an app. Sometimes,
a machine is not properly sized and the app is terminated by OOM killer,
sometimes, a mandatory environment variable is not provided and the app can’t
start. Health checks help, but may be hard to diagnose - a failing health check
doesn’t really tell you what’s wrong.
Starting from version v0.0.553,
flyctl will perform smoke checks during Apps V2 deploy.
During deploy, after a machine has transitioned to the
flyctl will check for 10 seconds whether the machine is up and running and not
constantly restarting (crashing) with a non-zero exit code.
flyctl detects that the app is crashing, it will abort the deployment and dump
the last log lines onto the terminal to help you diagnose what’s happening.
How it looks
❯ fly deploy ==> Verifying app config Validating /home/pbor/apps/smoke-checks-test/fly.toml Platform: machines ✓ Configuration is valid --> Verified app config ==> Building image Searching for image 'library/mariadb:10' remotely... image found: img_8y6w4z091k2p7rn3 Watch your app at https://fly.io/apps/smoke-checks-test/monitoring Updating existing machines in 'smoke-checks-test' with rolling strategy Machine 28744e2b071248 [app] has state: started [1/1] Checking that 28744e2b071248 [app] is up and running Smoke checks for 28744e2b071248 failed: the app appears to be crashing Check its logs: here's the last lines below, or run 'fly logs -i 28744e2b071248': Starting init (commit: 15c0f38)... Preparing to run: `docker-entrypoint.sh mariadbd` as root 2023/05/03 10:11:31 listening on [fdaa:1:d615:a7b:e0:935f:9112:2]:22 (DNS: [fdaa::3]:53) 2023-05-03 10:11:31+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.11.2+maria~ubu2204 started. 2023-05-03 10:11:31+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2023-05-03 10:11:31+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.11.2+maria~ubu2204 started. 2023-05-03 10:11:31+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified You need to specify one of MARIADB_ROOT_PASSWORD, MARIADB_ROOT_PASSWORD_HASH, MARIADB_ALLOW_EMPTY_ROOT_PASSWORD and MARIADB_RANDOM_ROOT_PASSWORD Starting clean up. [ 2.114360] reboot: Restarting system
How to disable
If you don’t really need the checks, they can be disabled by passing
--smoke-checks=false flag to
If you have feedback, comments or questions, please share!