refactor(fractal): reorganise templates

Refs: OD-44
This commit is contained in:
Oliver Davies 2023-09-25 00:17:41 +01:00
parent b6b6e86558
commit cfbdeb375e
13 changed files with 235 additions and 11 deletions

View file

@ -0,0 +1,3 @@
{{ managedText|raw }}
README.md

View file

@ -0,0 +1,8 @@
# {{ managedText|raw }}
export DOCKER_UID=1000
export COMPOSE_PROJECT_NAME={{ name }}
export COMPOSE_PROFILES=node
export DOCKER_WEB_VOLUME=.:{{ project_root }}

View file

@ -0,0 +1,3 @@
# {{ managedText|raw }}
use flake

View file

@ -0,0 +1,8 @@
# {{ managedText | raw }}
node_modules
{% if flake is not defined %}
.env
docker-compose.override.yaml
{% endif %}

View file

@ -0,0 +1,2 @@
ignore:
- DL3059

View file

@ -0,0 +1,3 @@
# {{ managedText|raw }}
--modules-folder /node_modules

View file

@ -0,0 +1,20 @@
FROM node:{{ node.version }} AS base
WORKDIR {{ project_root }}
RUN mkdir /node_modules \
&& chown node:node -R {{ project_root }} /node_modules
COPY --chown=node:node package*.json *yarn* {{ project_root }}
USER node
################################################################################
FROM base AS build
RUN yarn install --frozen-lockfile
COPY --chown=node:node . .
CMD ["bash"]

View file

@ -0,0 +1,57 @@
# {{ managedText|raw }}
x-proxy: &default-proxy
networks:
- default
- web
labels:
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.rule=Host(
`${COMPOSE_PROJECT_NAME}.localhost`,
{% for host in web.extra_hosts | default([]) -%}
{{ '`' ~ host ~ '`,' }}
{%- endfor %}
)"
x-app: &default-app
volumes:
- "${DOCKER_WEB_VOLUME:-./:{{ project_root }}}"
env_file:
- .env
restart: "${DOCKER_RESTART_POLICY:-unless-stopped}"
networks:
- default
deploy:
resources:
limits:
cpus: "${DOCKER_MYSQL_CPUS:-0}"
memory: "${DOCKER_MYSQL_MEMORY:-0}"
labels:
- "traefik.enabled=false"
tty: true
services:
{% if "web" in dockerCompose.services %}
web:
<<: [*default-proxy, *default-app]
build:
context: .
target: web
depends_on:
- php
profiles: [web]
{% endif %}
node:
<<: [*default-proxy, *default-app]
build:
context: .
target: build
volumes:
- .:{{ project_root }}
profiles: [node]
networks:
web:
external: true
name: traefik_proxy

View file

@ -0,0 +1,25 @@
# {{ managedText|raw }}
{
inputs = {
devshell.url = "github:numtide/devshell";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ inputs.devshell.flakeModule ];
systems = [ "x86_64-linux" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
devshells.default = {
packages = with pkgs; [
{% for package in flake.devshell.packages %}
"{{ package }}"
{% endfor %}
];
};
};
};
}

View file

@ -0,0 +1,82 @@
# {{ managedText | raw }}
{% set isFlake = flake is defined %}
default:
@just --list
# Start the project
start:
{% if not isFlake %}
cp -v --no-clobber .env.example .env
docker compose up -d
{% else %}
yarn dev
{% endif %}
{% if not isFlake %}
# Stop the project
stop:
docker compose down
{% endif %}
yarn *args:
{% if isFlake %}
{{ "just _exec yarn {{ args }}" | raw }}
{% else %}
{{ "just _exec node yarn {{ args }}" | raw }}
{% endif %}
fractal *args:
{{ "just yarn fractal {{ args }}" | raw }}
clean:
rm -fr build
build *args:
{{ "just fractal build {{ args }}" | raw }}
sync: clean build
#!/usr/bin/env bash
set -eux
aws s3 sync "build/." s3://"${BUCKET_NAME}" \
--acl "public-read" \
--cache-control max-age=3600
# Enable or disable Git hooks
git-hooks command:
#!/usr/bin/env bash
set -euo pipefail
case "{{ '{{ command }}'|raw }}" in
"on")
echo "Enabling Git hooks..."
git config core.hooksPath .githooks
;;
"off")
echo "Disabling Git hooks..."
git config --unset core.hooksPath
;;
*)
echo "Error: Invalid argument. Must be either 'on' or 'off'"
;;
esac
_exec +args:
{% if isFlake %}
{{ "nix develop --command {{ args }}" | raw }}
{% else %}
{{ "docker compose exec -T {{ args }}" | raw }}
{% endif %}
{% if not isFlake %}
_run service command *args:
docker compose run \
--entrypoint {{ "{{ command }}"|raw }} \
--no-deps \
--rm \
-T \
{{ "{{ service }} {{ args }}"|raw }}
{% endif %}
# vim: ft=just