diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index d9a2449..0000000 --- a/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -# See https://git-scm.com/docs/gitattributes for more about git attribute files. - -# Mark any vendored files as having been vendored. -vendor/* linguist-vendored diff --git a/Caddyfile.dev b/Caddyfile.dev new file mode 100644 index 0000000..c500c4e --- /dev/null +++ b/Caddyfile.dev @@ -0,0 +1,5 @@ +localhost + +encode gzip + +reverse_proxy landing:3000 diff --git a/Makefile b/Makefile index 9340ad4..2dcee74 100644 --- a/Makefile +++ b/Makefile @@ -6,21 +6,11 @@ PROJECT_SOURCES := "https://github.com/timmypidashev/web" PROJECT_REGISTRY := "ghcr.io/timmypidashev/web" PROJECT_ORGANIZATION := "org.opencontainers" -CONTAINER_PROXY_NAME := "proxy" -CONTAINER_PROXY_VERSION := "v0.0.1" -CONTAINER_PROXY_LOCATION := "src/proxy" -CONTAINER_PROXY_DESCRIPTION := "A Caddy reverse proxy." - CONTAINER_LANDING_NAME := "landing" CONTAINER_LANDING_VERSION := "v1.0.0" -CONTAINER_LANDING_LOCATION := "src/web/landing" +CONTAINER_LANDING_LOCATION := "src/landing" CONTAINER_LANDING_DESCRIPTION := "The landing page for my website." -CONTAINER_BLOG_NAME := "blog" -CONTAINER_BLOG_VERSION := "v0.0.0" -CONTAINER_BLOG_LOCATION := "src/web/blog" -CONTAINER_BLOG_DESCRIPTION := "The blog page for my website." - .DEFAULT_GOAL := help .PHONY: run build push prune bump .SILENT: run build push prune bump @@ -53,6 +43,7 @@ run: docker compose -f compose.$(word 2,$(MAKECMDGOALS)).yml up --remove-orphans + build: # Arguments # [container]: Build context(which container to build ['all' to build every container defined]) diff --git a/compose.dev.yml b/compose.dev.yml index f23eed6..cafeddf 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -3,15 +3,12 @@ version: "3.8" services: proxy: container_name: proxy - build: - context: ./src/proxy - dockerfile: Dockerfile.dev + image: caddy:latest ports: - - "80:80" - - "443:443" + - 80:80 + - 443:443 volumes: - - "./src/proxy/Caddyfile.dev:/Caddyfile.dev:ro" - - "./src/proxy/certs:/certs:rw" + - ./Caddyfile.dev:/etc/caddy/Caddyfile:ro restart: always networks: - proxy @@ -20,20 +17,11 @@ services: landing: container_name: landing - build: - context: ./src/landing - dockerfile: Dockerfile.dev - ports: - - "3000:3000" - - "8000:8000" - volumes: - - "./src/landing:/landing:rw" + image: landing:dev networks: - proxy - - networks: - # The proxy network is the only network exposed externally proxy: name: proxy + driver: bridge diff --git a/src/landing/.dockerignore b/src/landing/.dockerignore new file mode 100644 index 0000000..b289110 --- /dev/null +++ b/src/landing/.dockerignore @@ -0,0 +1,3 @@ +.web +__pycache__/* +Dockerfile diff --git a/src/landing/.gitignore b/src/landing/.gitignore new file mode 100644 index 0000000..eab0d4b --- /dev/null +++ b/src/landing/.gitignore @@ -0,0 +1,4 @@ +*.db +*.py[cod] +.web +__pycache__/ \ No newline at end of file diff --git a/src/landing/Dockerfile.dev b/src/landing/Dockerfile.dev new file mode 100644 index 0000000..c67d0ad --- /dev/null +++ b/src/landing/Dockerfile.dev @@ -0,0 +1,20 @@ +FROM python:3.11 + +# Copy local context to `/app` inside container (see .dockerignore) +WORKDIR /app +COPY . . + +# Install app requirements and reflex in the container +RUN pip install -r requirements.txt + +# Deploy templates and prepare app +RUN reflex init + +# Download all npm dependencies and compile frontend +RUN reflex export --frontend-only --no-zip + +# Needed until Reflex properly passes SIGTERM on backend. +STOPSIGNAL SIGKILL + +# Always apply migrations before starting the backend. +CMD reflex run --env dev diff --git a/src/landing/assets/favicon.ico b/src/landing/assets/favicon.ico new file mode 100644 index 0000000..166ae99 Binary files /dev/null and b/src/landing/assets/favicon.ico differ diff --git a/src/landing/landing/__init__.py b/src/landing/landing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/landing/landing/landing.py b/src/landing/landing/landing.py new file mode 100644 index 0000000..4a17519 --- /dev/null +++ b/src/landing/landing/landing.py @@ -0,0 +1,35 @@ +"""Welcome to Reflex! This file outlines the steps to create a basic app.""" + +from rxconfig import config + +import reflex as rx + +docs_url = "https://reflex.dev/docs/getting-started/introduction" +filename = f"{config.app_name}/{config.app_name}.py" + + +class State(rx.State): + """The app state.""" + + +def index() -> rx.Component: + return rx.center( + rx.theme_panel(), + rx.vstack( + rx.heading("Welcome to Reflex!", size="9"), + rx.text("Get started by editing ", rx.code(filename)), + rx.button( + "Check out our docs!", + on_click=lambda: rx.redirect(docs_url), + size="4", + ), + align="center", + spacing="7", + font_size="2em", + ), + height="100vh", + ) + + +app = rx.App() +app.add_page(index) diff --git a/src/landing/requirements.txt b/src/landing/requirements.txt new file mode 100644 index 0000000..65c472d --- /dev/null +++ b/src/landing/requirements.txt @@ -0,0 +1 @@ +reflex==0.4.3 diff --git a/src/landing/rxconfig.py b/src/landing/rxconfig.py new file mode 100644 index 0000000..c9a1e6d --- /dev/null +++ b/src/landing/rxconfig.py @@ -0,0 +1,5 @@ +import reflex as rx + +config = rx.Config( + app_name="landing", +) \ No newline at end of file