mail based rss feed aggregator
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Dockerfile and docker-compose.yml This closes [#5](https://tangled.org/ollie.earth/eater/issues/5)

ollie 44c37fb6 b3d85bbd

+94 -4
+53
Dockerfile
··· 1 + ARG GLEAM_VERSION=v1.15.4 2 + ARG OTP_VERSION=28 3 + 4 + # Build stage ------------------------------------------------------------------- 5 + 6 + FROM ghcr.io/gleam-lang/gleam:${GLEAM_VERSION}-erlang-alpine AS builder 7 + 8 + # Add missing packages 9 + RUN apk update && apk upgrade 10 + RUN apk add git # since there is still a git dep on gcourier 11 + RUN apk add build-base # because sqlight uses a NIF 12 + 13 + # Add project code 14 + COPY ./ /build/server 15 + 16 + WORKDIR /build/server 17 + 18 + # Download dependencies 19 + RUN gleam deps download 20 + 21 + # Compile the server code 22 + RUN gleam export erlang-shipment 23 + 24 + # Runtime stage ----------------------------------------------------------------- 25 + 26 + FROM docker.io/library/erlang:${OTP_VERSION}-alpine 27 + 28 + # Copy the compiled server code from the builder stage 29 + COPY --from=builder --chown=1000 /build/server/build/erlang-shipment /app 30 + COPY --from=ghcr.io/amacneil/dbmate:latest /usr/local/bin/dbmate /usr/local/bin/dbmate 31 + COPY ./db/migrations/ /app/migrations 32 + 33 + # Make sure these directories exist 34 + RUN mkdir /data && \ 35 + mkdir /data/logs && \ 36 + mkdir /data/database && \ 37 + chown -R 1000 /data 38 + 39 + # Set up the entrypoint 40 + WORKDIR /app 41 + 42 + # Set environment variables 43 + ENV PORT=3000 44 + ENV DATABASE_URL=sqlite:/data/database/database.sqlite3 45 + 46 + RUN echo '#!/bin/sh' > /app/entrypoint_.sh && \ 47 + echo 'dbmate --url $DATABASE_URL --migrations-dir "/app/migrations" up' >> /app/entrypoint_.sh && \ 48 + echo '/app/entrypoint.sh run' >> /app/entrypoint_.sh && \ 49 + chmod +x /app/entrypoint_.sh 50 + 51 + USER 1000 52 + VOLUME /data 53 + ENTRYPOINT ["/app/entrypoint_.sh"]
+25
docker-compose.yml
··· 1 + services: 2 + eater: 3 + image: eater 4 + container_name: eater 5 + restart: unless-stopped 6 + ports: 7 + - "3000:3000" 8 + environment: 9 + SMTP_HOST: smtp.protonmail.ch 10 + SMTP_PORT: 587 11 + SMTP_USERNAME: ${SMTP_USERNAME} 12 + SMTP_PASSWORD: ${SMTP_PASSWORD} 13 + ADMIN_PASSWORD: ${ADMIN_PASSWORD} 14 + # optional values 15 + # DATABASE_URL: <your-custom-database-url> # defaults to 'sqlite:/data/database/database.sqlite3' 16 + # SMTP_SENDER_EMAIL: <your-sender-email> # defaults to SMTP_USERNAME if unset 17 + # SMTP_SENDER_NAME: <your-sender-name> # defaults to '3000' if unset 18 + # ALLOW_SIGNUPS: true # whether to allow anyone to create an account, defaults to 'false' 19 + # PORT: 3000 # web-ui port, defaults to 3000 if unset 20 + volumes: 21 + - ./data:/data 22 + # you may get more specific than that 23 + # - ./data/logs:/data/logs/ 24 + # - ./data/database:/data/database/ 25 +
+1 -1
flake.nix
··· 23 23 gleam 24 24 erlang_28 25 25 rebar3 26 - bun 27 26 just 28 27 dbmate 29 28 sqlite 30 29 watchexec 30 + docker 31 31 ]; 32 32 33 33 shellHook = ''
+1 -1
gleam.toml
··· 15 15 [dependencies] 16 16 gleam_stdlib = ">= 1.0.0 and < 2.0.0" 17 17 parsed_it = ">= 0.1.1 and < 1.0.0" 18 - gcourier = { git = "git@github.com:nnuuvv/gcourier.git", ref="main" } 18 + gcourier = { git = "https://github.com/nnuuvv/gcourier.git", ref="main" } 19 19 # gcourier = { path = "../gcourier/" } 20 20 envoy = ">= 1.1.0 and < 2.0.0" 21 21 lustre = ">= 5.6.0 and < 6.0.0"
+12
justfile
··· 31 31 # re-generate the database and run parrot 32 32 update-sql: prepare-db 33 33 gleam run -m parrot 34 + 35 + # build image with tag 36 + docker-build: 37 + docker build . --network host -t "eater" 38 + 39 + 40 + # start docker compose with --build 41 + compose-up: docker-build 42 + docker compose up 43 + 44 + compose-up-no-build: 45 + docker compose up
+2 -2
manifest.toml
··· 10 10 { name = "exception", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "329D269D5C2A314F7364BD2711372B6F2C58FA6F39981572E5CA68624D291F8C" }, 11 11 { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" }, 12 12 { name = "formal", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_time"], otp_app = "formal", source = "hex", outer_checksum = "8FBEB42758F90ACAA82A8B6B8FE11B4A3B2A2B290E97B4DDD4B7DCE98DEB885C" }, 13 - { name = "gcourier", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib", "gleam_time", "youid"], source = "git", repo = "git@github.com:nnuuvv/gcourier.git", commit = "945277542533752d15ddb8f2795eb615581058ff" }, 13 + { name = "gcourier", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib", "gleam_time", "youid"], source = "git", repo = "https://github.com/nnuuvv/gcourier.git", commit = "945277542533752d15ddb8f2795eb615581058ff" }, 14 14 { name = "glaze_oat", version = "3.0.0", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib", "lustre"], otp_app = "glaze_oat", source = "hex", outer_checksum = "B1373CA720EBB9D7FBDA4D2E28CAAD2B1928F6845313570AE72CA1D93B069706" }, 15 15 { name = "gleam_crypto", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "2DE9E4EF53CF6FEE049D4F765731F7178F7A11AEFAE00EEE63BF7536B354AD3F" }, 16 16 { name = "gleam_erlang", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "1124AD3AA21143E5AF0FC5CF3D9529F6DB8CA03E43A55711B60B6B7B3874375C" }, ··· 44 44 envoy = { version = ">= 1.1.0 and < 2.0.0" } 45 45 ewe = { version = ">= 3.0.7 and < 4.0.0" } 46 46 formal = { version = ">= 3.0.1 and < 4.0.0" } 47 - gcourier = { git = "git@github.com:nnuuvv/gcourier.git", ref = "main" } 47 + gcourier = { git = "https://github.com/nnuuvv/gcourier.git", ref = "main" } 48 48 glaze_oat = { version = ">= 3.0.0 and < 4.0.0" } 49 49 gleam_crypto = { version = ">= 1.5.1 and < 2.0.0" } 50 50 gleam_erlang = { version = ">= 1.3.0 and < 2.0.0" }