-
Notifications
You must be signed in to change notification settings - Fork 3
Almost working devcontainers #71
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
base: main
Are you sure you want to change the base?
Conversation
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Do you still hold this opinion in 2025? Isn't the goal of devcontainers to allow us to work on the code with sensible defaults from any machine? Wouldn't "sensible defaults" also include a dev setup like VS Code extensions and settings ? |
I still don't like the idea of having the whole vscode configuration standardized. To me it makes more sense to have a docker container to standardize the environment of running the code, mount the code inside the container as a volume, and edit the code outside a container in my own IDE. I just can't see the benefit, it always feels like extra abstraction and complexity that only yields a more uncomfortable dev environment |
To be fair the always installed feautres in vscode somewhat solves the issue of the uncomfortable env. But other than specific cases, like remote development in the cloud, I wouldn't use vscode devcontainers. |
Closes #56
Closes #60 -> doesn't work yet, the
db-init
service fails if the port is changedThis PR has a few things:
Devcontainers
I wanted to have a working docker-compose.yml file that doesn't have any devcontainer specific setting in it in order to be able to not use vscode devcontainers (I'm not a fan of having the code inside a container, only running the apps in containers is the way IMHO & and I prefer using my own vscode setup).
The second compose file (
docker-compose.workspace.yml
) is the one that runs a service that has the code, and it is the service specified in devcontainer.json.Another issue with devcontainers is that it seems like we can't specify build args for compose files (only for dockerfiles). This means that to have the env vars during build time, we need to rely on the default behaviour that uses a .env file next to the compose files... So unfortunately the multiple env magic won't work with devcontainers.
Right now the devcontainer starts and you can access swagger in your browser. The hot reload should also be working. I saw some biome related errors and some elysia linting errors in the code, the devcontainer config should probably be changed to fix these. I'll look into it later
Env files
I moved the env files into a separate environments folder and split them. This way the DB won't have the app secrets at any point. Not a big deal in our case, but it was an easy change to make it a bit better. This might've broke the .local env logic that you created, LMK what you think about it
DB init step
To avoid relying on magic .sh scripts I just added a separate service that runs after the DB is up (
db-init
). It does the migrations & seeding, then exits. Then the app itself only starts when this init service completed.