I am trying to get a Strapi application running on Fly.io. There is a PR in the Strapi repo which gives deployment instructions, so I followed them.
Bad news: they don’t work. I’ve put a comment on the PR to alert OP to this, but @lubien suggested I should ask the question here too, where more Fly.io folks would see it. Here’s what Fly.io looks like:
The logs say that Strapi actually starts, but then it dies again:
2022-08-14T17:02:19.541 runner[2fe10c23] lhr [info] Starting instance
2022-08-14T17:02:20.004 runner[2fe10c23] lhr [info] Configuring virtual machine
2022-08-14T17:02:20.010 runner[2fe10c23] lhr [info] Pulling container image
2022-08-14T17:02:31.785 runner[2fe10c23] lhr [info] Unpacking image
2022-08-14T17:02:48.227 runner[2fe10c23] lhr [info] Preparing kernel init
2022-08-14T17:02:48.593 runner[2fe10c23] lhr [info] Configuring firecracker
2022-08-14T17:02:48.768 runner[2fe10c23] lhr [info] Starting virtual machine
2022-08-14T17:02:48.993 app[2fe10c23] lhr [info] Starting init (commit: c86b3dc)...
2022-08-14T17:02:49.020 app[2fe10c23] lhr [info] Preparing to run: `/cnb/process/web` as heroku
2022-08-14T17:02:49.050 app[2fe10c23] lhr [info] 2022/08/14 17:02:49 listening on [fdaa:0:81f5:a7b:be65:2fe1:c23:2]:22 (DNS: [fdaa::3]:53)
2022-08-14T17:02:49.601 app[2fe10c23] lhr [info] yarn run v1.22.19
2022-08-14T17:02:49.629 app[2fe10c23] lhr [info] $ strapi start
2022-08-14T17:02:53.380 app[2fe10c23] lhr [info] [2022-08-14 17:02:53.377] info: The Users & Permissions plugin automatically generated a jwt secret and stored it in .env under the name JWT_SECRET.
2022-08-14T17:02:53.637 app[2fe10c23] lhr [info] Project information
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] ┌────────────────────┬──────────────────────────────────────────────────┐
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Time │ Sun Aug 14 2022 17:02:53 GMT+0000 (Coordinated … │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Launched in │ 1640 ms │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Environment │ development │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Process PID │ 536 │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Version │ 4.3.4 (node v15.14.0) │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] │ Edition │ Community │
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] └────────────────────┴──────────────────────────────────────────────────┘
2022-08-14T17:02:53.654 app[2fe10c23] lhr [info] Actions available
2022-08-14T17:02:53.655 app[2fe10c23] lhr [info] One more thing...
2022-08-14T17:02:53.655 app[2fe10c23] lhr [info] Create your first administrator 💻 by going to the administration panel at:
2022-08-14T17:02:53.656 app[2fe10c23] lhr [info] ┌─────────────────────────────┐
2022-08-14T17:02:53.656 app[2fe10c23] lhr [info] │ http://localhost:8080/admin │
2022-08-14T17:02:53.656 app[2fe10c23] lhr [info] └─────────────────────────────┘
2022-08-14T17:07:33.942 runner[2fe10c23] lhr [info] Shutting down virtual machine
2022-08-14T17:07:34.027 app[2fe10c23] lhr [info] Sending signal SIGINT to main child process w/ PID 516
2022-08-14T17:07:35.031 app[2fe10c23] lhr [info] Main child exited with signal (with signal 'SIGINT', core dumped? false)
2022-08-14T17:07:35.032 app[2fe10c23] lhr [info] Starting clean up.
I’m using the .env which came with yarn create, which uses the Strapi standard port 1337. Here is the fly.toml created by fly launch, modified as directed in the proposed Strapi guide doc:
# fly.toml file generated for my-app on 2022-08-14T16:21:23+01:00
app = "my-app"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []
[build]
builder = "heroku/buildpacks:20"
[env]
PORT = "8080"
[experimental]
allowed_public_ports = []
auto_rollback = true
[[services]]
http_checks = []
internal_port = 1337
processes = ["app"]
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"
[[services.ports]]
force_https = true
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"
The Dockerfile does indeed EXPORT 1337. I presume I should be able to reach the service on https://my-app.fly.dev:8080, right? That URL just hangs and then times out.
Any suggestions would be much appreciated.
