Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better dev docker containers, Simpler production docker file, caddy for ssl #136

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

lil5
Copy link
Contributor

@lil5 lil5 commented Jan 2, 2025

  1. New docker files
  2. All use alpine instead of debian for smaller images.
  3. A make file is include for easier server restarts. make dev-restart-server
  4. The frontend container uses chokidar to rebuild after changes have been made automatically.

I tried to keep the changes scoped to just docker.


  • Tested make dev-start docker
  • Tested example raw linux
  • Tested example ssl caddy

Notes: example ssl caddy

Because this version of the docker image isn't on docker, it's a chicken or egg issue.
So to test it I run the old image, but need to change the Caddyfile to:

server40.vps.webdock.cloud {
        respond "hi"
}

server40.vps.webdock.cloud:7000 {
        reverse_proxy http://app:7000
}

And add - 7000:7000 to services -> caddy -> ports

I tested this on a vps with ports 80 443 7000 all available, caddy successfully automatically 🧙 sets up https

@mbaum0
Copy link

mbaum0 commented Jan 10, 2025

I've merged this into my fork and have been using the new Makefile as part of my development flow for a week now. It's been a much smoother experience. Thanks for putting this together.

Any idea how to get automatic reloads working for the react frontend?

@balzack
Copy link
Owner

balzack commented Jan 11, 2025

I see this PR makes for a much better development experience. I also want to make sure it won't impact existing deployments.

This is probably an issue with my environment that I need to work through. When I re-deploy with the newly built container I get the following error:
/app/databag/net/server/entrypoint.sh: line 21: go: not found

I also noticed the switch to build for arm64 was removed. This was for multiarch containers allowing deployment to a higher powered RaspberryPi. Perhaps this is covered by the CGO_ENABLED switch, but I want to make sure this use case is still supported.

I appreciate these changes and will merge them in once I can properly test them. Thank you!

@lil5
Copy link
Contributor Author

lil5 commented Jan 11, 2025

@balzack

This is probably an issue with my environment that I need to work through. When I re-deploy with the newly built container I get the following error:
/app/databag/net/server/entrypoint.sh: line 21: go: not found

sounds like you don't have go/bin in your PATH env

@lil5
Copy link
Contributor Author

lil5 commented Jan 11, 2025

I also noticed the switch to build for arm64 was removed. This was for multiarch containers allowing deployment to a higher powered RaspberryPi. Perhaps this is covered by the CGO_ENABLED switch, but I want to make sure this use case is still supported.

I'll take a look to re-add that, I did try earlier but cross compilation wasn't working from my m2 MacBook, maybe my fedora pc will give better results.

@lil5
Copy link
Contributor Author

lil5 commented Jan 12, 2025

Any idea how to get automatic reloads working for the react frontend?

@mbaum0 Last time I attepted this I got very stuck as the api wasn't prefixed with /api/ making the proxy too complex to run a vite dev and proxy to the api.

I'll take another look after v3 is there

@lil5
Copy link
Contributor Author

lil5 commented Jan 12, 2025

@balzack

RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then ARCHITECTURE=amd64; elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then ARCHITECTURE=arm64; elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then ARCHITECTURE=aarch64; else ARCHITECTURE=unsupported; fi \

If you're talking about the above command. I'll be adding something like this soon, I noticed building a go binary without explicitly saying which arch it should cross build to just doesn't work well.

CGO_ENABLED=1 is a requirement for sqlite to work, nothing to do with architecture.

@lil5
Copy link
Contributor Author

lil5 commented Jan 12, 2025

@balzack with 645f83a cross build should be a thing now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants