Hacker News new | ask | show | jobs
by mooreds 1616 days ago
For a company that says it makes it super easy to deploy a container image and mentions that all you need to do "Write your code, package it into a Docker image, deploy it to Fly's platform"[0], they sure have a dearth of documentation on how to deploy an existing docker container.

I am not sure if I'm missing something or what, but here's where I looked:

   * googled 'docker fly' and a blog post that references docker but as far as I can see doesn't have instructions on deploying docker images shows up[1].
   * their getting started guide[2], called a 'speed run' which has all kinds of CLI commands but doesn't actually show how I'd pick a docker image.
   * their quickstart docs[3], which outline how to deploy all manner of applications, except for, you guessed it, an existing docker image.
   * scanned the menu of their docs, and didn't see anything.
I really want to like this service, as we have (at $CURJOB) an app packaged as a docker image that it'd be awesome to set up to run on Fly.io, especially with the multi-region postgresql.

What the heck am I missing? Can I just not read? Do I just need to install the CLI and all shall be made clear?

0: https://fly.io/docs/introduction/

1: https://fly.io/blog/docker-without-docker/

2: https://fly.io/docs/speedrun/

3: https://fly.io/docs/getting-started/

3 comments

You know, you're not really missing anything, we just don't connect the dots very well.

Install CLI, run `fly launch` in a directory with a Dockerfile, and it should just work.

Most of our users don't start with a Docker image though, they start with Phoenix. What you're seeing is a little bit of indecisiveness in how we target the docs.

I just did this with an application I haven't touch in years. The deployment worked on the first try. A few clicks and I had TLS certificates. I'm sold!
I can’t live with this typo. s/touch/touched
Out of curiosity, why target Phoenix users as your primary audience when you serve generic Docker users easily as well, given that they're likely a 10x or more segment? Are you just marketing to a tighter target audience to start, or is your platform/UI specifically optimized to support Phoenix?
We started with generic Docker! The Phoenix focus has been very helpful, though. Docker apps are incredibly broad, other than "it's really easy to launch a container", it's hard to define why we're especially good at Docker containers.

With Phoenix, we can say: run your fullstack Phoenix app on Fly and your users get sub 40ms responses from LiveView. When responses are that fast, you can write less code and still build really dynamic applications. And we can give those devs a really nice launch experience: https://twitter.com/chris_mccord/status/1468998944009166849

We're getting to the point where we can expand this focus. The infrastructure works great for many types of apps. The launch UX could be good for every full stack framework with enough people.

The Phoenix guy works for them, so I'm sure they have a lot of organic interest from Phoenix users. It's like how you don't have to use Next.js on Vercel, but…
This type of humble and helpful answer from a vendor is refreshing.
> Install CLI, run `fly launch` in a directory with a Dockerfile, and it should just work.

Does this build the Docker image locally and send it to Fly.io, or does it send the whole build context to Fly.io and build the image remotely?

If you have Docker running locally, it does a local build and pushes to our registry. If you don't have docker running locally, it launches Docker on our infrastructure, sends it the context, and does a remote build.

You can control this with "fly deploy --remote-only" and "fly deploy --local-only". Don't use both, it might cause a paradox.

Very sensible, thanks.
I’d really recommend adding a section to this* page something like “existing Docker containers” ! I would not have found out that it’s possible based on your current docs layout.

* https://fly.io/docs/getting-started/

Also, I noticed that the Speedrun page a) in step 3, doesn’t tell you to CD into your source code directory before running the launch command to autobuild, and b) is missing links to all the autobuild supported languages

Thanks! I'd rather run with a defined image, is there a way to do that?

Here's the image: https://hub.docker.com/r/fusionauth/fusionauth-app/tags (supports ARM or x86).

Edit: https://news.ycombinator.com/item?id=30019258 shows, I think, how to do that.

Ah, for this you want "fly launch", it'll tell you it's going to generate a config file for you.

Edit the config so the `internal_port` is right for the app you're running, then `fly deploy -i fusionauth/fusionauth-app` and you should be good.

What are your ARM plans, if any?
We have no ARM plans, but a strong desire. The really good ARM stuff is locked up within Apple and Amazon, though. I'm really hoping an independent chip vendor ships a compelling and broadly available ARM platform we can use for servers. They all keep killing their products. :/
Are they killing their products due to lack of demand (which seems odd, given the cost/benefit), too much competition from Amazon, running out of money vs. ramping up sales, or??

I just googled and it looks like the Ampere Altra is shipping in some rackmount configs? (Vaporware?)

https://www.gigabyte.com/Enterprise/Rack-Server?fid=2326,222...

https://www.avantek.co.uk/ such as https://store.avantek.co.uk/ampere-altra-mt-jade.html

https://amperecomputing.com/reference-platforms/

Any chance of getting autobuilder support for Rust? :)

What about same for .NET? (and I suppose some people would care about Java,Kotlin,Swift ;)

I don’t have to deal with containers with my current infrastructure, and it would be nice if I didn’t just to be able to use Fly—I find containers to be a PITA.

Thanks! I’m super jazzed about Fly :D

Yes there's a good chance for all of these! You can post on community.fly.io if you'd like and get a headstart. People have prebuilt Dockerfiles laying around for everything (and we have lost of Rust stuff).

We use Dockerfiles kind of like make files. Once you have one that works, you don't need to think about it anymore.

> I don’t have to deal with containers with my current infrastructure

Just curious, which infrastructure is that, and does it have built-in build support for Rust?

You're right, they should make that much more clear. I'd expect it to be on the left side menu, just like they have all the "Run a [language] app".

Based on your first link [0], I saw,

> You can run most applications with a Dockerfile using the flyctl command.

With that, I looked over the left-side menu, and clicked `flyctl`[1], since it seems that's what you'd need to use to deploy an existing app with Docker. After that, I clicked on "Launch an App" [2], which shows help for the `flyctl launch` subcommand, including a parameter `--dockerfile`. I think that's how you would deploy an existing app with docker?

[0] https://fly.io/docs/introduction/ [1] https://fly.io/docs/flyctl/ [2] https://fly.io/docs/flyctl/launch/

Thanks! As mentioned in sibling comment, I want to use an existing docker image, so probably `flyctl launch --image $NAME`.
I agree - could be clearer!