From 5277cf0cc56e825c6848d8366b12a5a4c3611ab1 Mon Sep 17 00:00:00 2001 From: ModZero Date: Thu, 23 Jan 2025 05:15:57 +0000 Subject: [PATCH] Use dind for maximum nonsense --- .devcontainer/devcontainer.json | 30 ++++++++++++++++++++++++++--- .devcontainer/onCreate.sh | 3 ++- docker-compose.yml | 10 +++++----- dockerfiles/devcontainer.dockerfile | 10 ++++++++++ justfile | 6 ++++++ kredens/settings.py | 2 ++ 6 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b096688..d571b65 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,8 +4,27 @@ "dockerfile": "../dockerfiles/devcontainer.dockerfile", "context": ".." }, + "forwardPorts": [ + 80, 443, 2019 + ], + "portsAttributes": { + "80": { + "label": "Plaintext", + "protocol": "http", + "elevateIfNeeded": true + }, + "443": { + "label": "Encrypted", + "protocol": "https", + "elevateIfNeeded": true + }, + "2019": { + "label": "Admin API", + "protocol": "http", + } + }, "features": { - "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { + "ghcr.io/devcontainers/features/docker-in-docker:2": { "installDockerComposeSwitch": false }, "ghcr.io/devcontainers/features/node:1": { @@ -23,9 +42,8 @@ "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/onCreate.sh", "postAttachCommand": "${containerWorkspaceFolder}/.devcontainer/postAttach.sh", "remoteEnv": { - "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}", "WORKSPACE_FOLDER": "${containerWorkspaceFolder}", - "UV_LINK_MODE": "copy", + "UV_LINK_MODE": "copy" }, "mounts": [ { @@ -37,7 +55,13 @@ "type": "volume", "source": "${devcontainerId}-node-modules", "target": "${containerWorkspaceFolder}/node_modules" + }, + { + "type": "volume", + "source": "${devcontainerId}-bashhistory", + "target": "/commandhistory" } + ], "customizations": { "vscode": { diff --git a/.devcontainer/onCreate.sh b/.devcontainer/onCreate.sh index 1afdaf6..249fcea 100755 --- a/.devcontainer/onCreate.sh +++ b/.devcontainer/onCreate.sh @@ -13,7 +13,8 @@ git config --global --add safe.directory ${WORKSPACE_FOLDER} sudo chown $(id -u):$(id -g) -fR \ ${WORKSPACE_FOLDER} \ ${WORKSPACE_FOLDER}/.venv \ - ${WORKSPACE_FOLDER}/node_modules + ${WORKSPACE_FOLDER}/node_modules \ + /commandhistory cd ${WORKSPACE_FOLDER} diff --git a/docker-compose.yml b/docker-compose.yml index 7fec22d..532e4cd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,14 +7,14 @@ services: pull_policy: build develop: watch: - - path: ${LOCAL_WORKSPACE_FOLDER:-.}/kredens + - path: ./kredens action: sync target: /app/kredens - - path: ${LOCAL_WORKSPACE_FOLDER:-.}/pyproject.toml + - path: ./pyproject.toml action: rebuild - - path: ${LOCAL_WORKSPACE_FOLDER:-.}/manage.py + - path: ./manage.py action: rebuild - - path: ${LOCAL_WORKSPACE_FOLDER:-.}/uv.lock + - path: ./uv.lock action: rebuild environment: - DATABASE_URL=postgres://postgres:${DATABASE_PASSWORD:?Database password required}@database/kredens @@ -43,7 +43,7 @@ services: cap_add: - NET_ADMIN volumes: - - ${LOCAL_WORKSPACE_FOLDER:-.}/configs/caddy/:/etc/caddy/ + - ./configs/caddy/:/etc/caddy/ - caddy_data:/data - caddy_config:/config ports: diff --git a/dockerfiles/devcontainer.dockerfile b/dockerfiles/devcontainer.dockerfile index 7a40a7d..14a8924 100755 --- a/dockerfiles/devcontainer.dockerfile +++ b/dockerfiles/devcontainer.dockerfile @@ -1,5 +1,7 @@ FROM mcr.microsoft.com/devcontainers/base:bookworm +ARG USERNAME=vscode + # Install things I need for Caddy and such RUN \ @@ -27,3 +29,11 @@ RUN \ RUN mkdir -p /workspaces/kredens && chown vscode:vscode /workspaces WORKDIR /workspaces/kredens + +# Persist history + +RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \ + && mkdir /commandhistory \ + && touch /commandhistory/.bash_history \ + && chown -R $USERNAME /commandhistory \ + && echo "$SNIPPET" >> "/home/$USERNAME/.bashrc" \ No newline at end of file diff --git a/justfile b/justfile index 51cca6b..64156d7 100644 --- a/justfile +++ b/justfile @@ -1,2 +1,8 @@ watch: docker compose up --watch + +migrate: + uv run ./manage.py migrate + +bootstrap: + uv run ./manage.py bootstrap \ No newline at end of file diff --git a/kredens/settings.py b/kredens/settings.py index debc4be..a722d8b 100644 --- a/kredens/settings.py +++ b/kredens/settings.py @@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.1/ref/settings/ """ from pathlib import Path +import os import dj_database_url @@ -82,6 +83,7 @@ WSGI_APPLICATION = "kredens.wsgi.application" DATABASES = { "default": dj_database_url.config( + default=f"postgres://postgres:{os.environ.get("DATABASE_PASSWORD")}@localhost/kredens", conn_max_age=600, conn_health_checks=True, ),