From c6eda0ebff168d6471e0c9a6e69f063a3e28a884 Mon Sep 17 00:00:00 2001 From: w2 Date: Sat, 1 Jan 2022 05:56:05 +0000 Subject: [PATCH] add: frontend docker deploy scripts --- Dockerfile.photovoter-frontend | 39 ++++++++++++++++++++++++++++++++++ docker-compose.yml | 26 +++++++++++++++++++++-- 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.photovoter-frontend diff --git a/Dockerfile.photovoter-frontend b/Dockerfile.photovoter-frontend new file mode 100644 index 0000000..5fad1cc --- /dev/null +++ b/Dockerfile.photovoter-frontend @@ -0,0 +1,39 @@ +FROM caddy:2-alpine + +ARG DOMAIN='gman.me' + +# Prepair utils +RUN apk add --no-cache git + +# Pull frontend +RUN git clone --depth=1 https://git.iamonlyherefortheicecream.ml/g/photovoter-front.git /srv && \ + rm -rf /srv/.git /srv/.gitignore + +# Clean up +RUN apk del git + +# Configure domain +RUN sed --in-place \ + --expression "s#http://127.0.0.1:8000#http://$DOMAIN/api/v1#g" \ + --expression "s#http://127.0.0.1:\${serverPort}#http://$DOMAIN/api/v1#g" \ + --expression "s#http://127.0.0.1:5500#http://$DOMAIN/photos#g" \ + /srv/app.js + +# Configure caddy +# follow https://github.com/tiangolo/fastapi/issues/102 +# to fix openapi.json hardcode ugliness +RUN echo -e \ + "$DOMAIN {\n" \ + " root * /srv\n" \ + " file_server\n" \ + "\n" \ + " handle_path /api/v1/* {\n" \ + " rewrite * {path}\n" \ + " reverse_proxy backend:8000\n" \ + " }\n" \ + "\n" \ + " redir /openapi.json /api/v1/openapi.json permanent\n" \ + "}" \ + > /etc/caddy/Caddyfile + +ONBUILD RUN caddy validate diff --git a/docker-compose.yml b/docker-compose.yml index 229d5b0..fd0f43e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,30 @@ version: "2" services: backend: image: photovoter-backend:latest - ports: - - "8000:8000" volumes: - ./photovoter_data:/srv/photovoter + networks: + default: + aliases: + - backend + + + frontend: + image: photovoter-frontend:latest + ports: + - "80:80" + volumes: + - ./photovoter_data/image:/srv/photos + - caddy_data:/data + - caddy_config:/config + networks: + - default + + +volumes: + caddy_data: + external: true + caddy_config: +networks: + default: