diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..a6c0ec7 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,16 @@ +FROM ghcr.io/astral-sh/uv:0.5.25 AS uv +FROM python:3.13-slim AS python +FROM code.forgejo.org/forgejo/runner:6.2.0@sha256:936c4fef04f0e2bda86c325b8ef40359aeead4740a48b1d5a0c9a112f1185e45 AS forgejo-runner + +FROM mcr.microsoft.com/vscode/devcontainers/base:bookworm@sha256:6155a486f236fd5127b76af33086029d64f64cf49dd504accb6e5f949098eb7e +LABEL repository="www.coastalcommits.com/cswimr/PyZipline" +LABEL maintainer="cswimr " + +COPY --from=uv --chown=vscode: /uv /uvx /bin/ +COPY --from=python --chown=vscode: /usr/local /usr/local +COPY --from=forgejo-runner --chown=vscode: /bin/forgejo-runner /bin/forgejo-runner +COPY --chown=vscode: .devcontainer/home/* /home/vscode/ + +RUN ln -s /usr/local/bin/python3.13 /usr/local/bin/python; \ + python --version; \ + python -m ensurepip diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..0a92ce0 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,31 @@ +{ + "name": "PyZipline", + "dockerComposeFile": "docker-compose.yml", + "service": "devcontainer", + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", + "customizations": { + "vscode": { + "extensions": [ + "charliermarsh.ruff", + "ms-python.python", + "tekumara.typos-vscode", + "tamasfe.even-better-toml", + "redhat.vscode-yaml", + "DavidAnson.vscode-markdownlint", + "aaron-bond.better-comments", + "donjayamanne.githistory", + "eamodio.gitlens" + ] + } + }, + "containerEnv": { + "DISPLAY": "dummy", + "PYTHONUNBUFFERED": "True", + "UV_LINK_MODE": "copy", + "UV_PYTHON_PREFERENCE": "only-system", + "UV_PYTHON_DOWNLOADS": "never", + "PROJECT_DIR": "/workspaces/${localWorkspaceFolderBasename}" + }, + "postCreateCommand": "uv sync --frozen", + "remoteUser": "vscode" +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..deb8595 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3" +services: + devcontainer: + container_name: devcontainer + build: + context: . + dockerfile: Dockerfile + + postgres: + container_name: zipline-database + image: postgres:16 + restart: unless-stopped + environment: + POSTGRES_USER: zipline + POSTGRES_PASSWORD: zipline + POSTGRES_DATABASE: zipline + volumes: + - pg_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + + zipline: + container_name: zipline + image: ghcr.io/diced/zipline:v4 + environment: + CORE_SECRET: "secret" + CORE_PORT: 3001 + CORE_HOSTNAME: 0.0.0.0 + DATABASE_URL: postgres://zipline:zipline@postgres:5432/zipline + DATASOURCE_TYPE: local + DATASOURCE_LOCAL_DIRECTORY: /zipline/uploads + ports: + - "3001:3001" + restart: unless-stopped + volumes: + - data:/zipline/public + - themes:/zipline/themes + - uploads:/zipline/uploads + depends_on: + - "postgres" + healthcheck: + test: ["CMD-SHELL", "wget -q --spider http://localhost:3001 || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + pg_data: + data: + themes: + uploads: diff --git a/.devcontainer/home/.bash_aliases b/.devcontainer/home/.bash_aliases new file mode 100644 index 0000000..277fc5f --- /dev/null +++ b/.devcontainer/home/.bash_aliases @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +alias runactions="forgejo-runner exec --default-actions-url=https://www.coastalcommits.com --gitea-instance=https://www.coastalcommits.com"