From 7470e0128fe6a9c8c7b566ee68692dd34caa31de Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Sun, 24 May 2020 13:16:54 +0200 Subject: [PATCH 1/2] Added sass build command and updated dockerfile and docker-compose. --- Dockerfile | 12 +++--------- docker-compose.yml | 41 ++++++++++++++++++++++++++++++++++++++--- style/package.json | 1 + 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index fa6d998..250c675 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,17 +2,17 @@ FROM golang AS build RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y curl && \ - curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh && bash nodesource_setup.sh && \ + curl -sL https://deb.nodesource.com/setup_13.x -o nodesource_setup.sh && bash nodesource_setup.sh && \ apt-get install -y nodejs WORKDIR /go/src/github.com/Kugelschieber/schnittfest -ADD . . +COPY . . # build server RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags "-s -w" /go/src/github.com/Kugelschieber/schnittfest/main.go && \ mkdir /app && mv /go/src/github.com/Kugelschieber/schnittfest/main /app/server # compile CSS -RUN cd /go/src/github.com/Kugelschieber/schnittfest/style && bash -c "npm i" && bash -c "npm rebuild node-sass" && bash -c "npm run style" +RUN cd /go/src/github.com/Kugelschieber/schnittfest/style && bash -c "npm i" && bash -c "npm rebuild node-sass" && bash -c "npm run build" # copy resources RUN mv /go/src/github.com/Kugelschieber/schnittfest/template /app/template && \ @@ -27,12 +27,6 @@ RUN apk update && \ COPY --from=build /app /app WORKDIR /app -# use root to bind port 80 and 443 -#RUN addgroup -S appuser && \ -# adduser -S -G appuser appuser && \ -# chown -R appuser:appuser /app -#USER appuser - # default config ENV SCHNITTFEST_HOST=0.0.0.0:80 ENV SCHNITTFEST_LOGLEVEL=info diff --git a/docker-compose.yml b/docker-compose.yml index b7ee2e2..8114ade 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,42 @@ -version: '3' +version: "3" services: + traefik: + image: "traefik:v2.2" + container_name: traefik + restart: always + command: + # - "--log.level=DEBUG" + # - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.tls-resolver.acme.httpchallenge=true" + - "--certificatesresolvers.tls-resolver.acme.httpchallenge.entrypoint=web" + # - "--certificatesresolvers.tls-resolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" + - "--certificatesresolvers.tls-resolver.acme.email=contact@schnittfest.gmbh" + - "--certificatesresolvers.tls-resolver.acme.storage=/letsencrypt/acme.json" + ports: + - "80:80" + - "443:443" + # - "8080:8080" + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - /root/schnittfest/letsencrypt:/letsencrypt schnittfest: image: kugel/schnittfest - ports: - - "8080:80" + container_name: schnittfest + restart: always + depends_on: + - traefik + labels: + - "traefik.enable=true" + - "traefik.http.routers.schnittfest.entrypoints=web" + - "traefik.http.routers.schnittfest.rule=Host(`schnittfest.gmbh`)" + - "traefik.http.routers.schnittfest.middlewares=http-redirect" + - "traefik.http.routers.schnittfest-secure.entrypoints=websecure" + - "traefik.http.routers.schnittfest-secure.rule=Host(`schnittfest.gmbh`)" + - "traefik.http.routers.schnittfest-secure.tls.certresolver=tls-resolver" + - "traefik.http.middlewares.http-redirect.redirectscheme.scheme=https" + - "traefik.http.middlewares.http-redirect.redirectscheme.permanent=true" diff --git a/style/package.json b/style/package.json index c172a3d..d2e369a 100644 --- a/style/package.json +++ b/style/package.json @@ -4,6 +4,7 @@ "description": "Schnittfest GmbH website styling.", "main": "index.js", "scripts": { + "build": "node-sass sass/ -o ../static/ --output-style compressed", "style": "node-sass -w sass/ -o ../static/ --output-style compressed" }, "author": "Marvin Blum, Daniel Schramm", From 76ddacccbb52d1edfa74d4b086e69e2bb94ae8a1 Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Sun, 24 May 2020 14:08:24 +0200 Subject: [PATCH 2/2] Better traefik configuration. --- docker-compose.yml | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8114ade..6a96f22 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,24 +6,35 @@ services: container_name: traefik restart: always command: - # - "--log.level=DEBUG" - # - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.tls-resolver.acme.httpchallenge=true" - "--certificatesresolvers.tls-resolver.acme.httpchallenge.entrypoint=web" - # - "--certificatesresolvers.tls-resolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.tls-resolver.acme.email=contact@schnittfest.gmbh" - "--certificatesresolvers.tls-resolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - # - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /root/schnittfest/letsencrypt:/letsencrypt + labels: + - "traefik.enable=true" + # Global redirection: http to https + - 'traefik.http.routers.http-catchall.rule=HostRegexp(`{host:(www\.)?.+}`)' + - "traefik.http.routers.http-catchall.entrypoints=web" + - "traefik.http.routers.http-catchall.middlewares=wwwtohttps" + # Global redirection: https (www.) to https + - 'traefik.http.routers.wwwsecure-catchall.rule=HostRegexp(`{host:(www\.).+}`)' + - "traefik.http.routers.wwwsecure-catchall.entrypoints=websecure" + - "traefik.http.routers.wwwsecure-catchall.tls=true" + - "traefik.http.routers.wwwsecure-catchall.middlewares=wwwtohttps" + # middleware: http(s)://(www.) to https:// + - 'traefik.http.middlewares.wwwtohttps.redirectregex.regex=^https?://(?:www\.)?(.+)' + - 'traefik.http.middlewares.wwwtohttps.redirectregex.replacement=https://$${1}' + - 'traefik.http.middlewares.wwwtohttps.redirectregex.permanent=true' schnittfest: image: kugel/schnittfest container_name: schnittfest @@ -32,11 +43,7 @@ services: - traefik labels: - "traefik.enable=true" - - "traefik.http.routers.schnittfest.entrypoints=web" - - "traefik.http.routers.schnittfest.rule=Host(`schnittfest.gmbh`)" - - "traefik.http.routers.schnittfest.middlewares=http-redirect" - - "traefik.http.routers.schnittfest-secure.entrypoints=websecure" - - "traefik.http.routers.schnittfest-secure.rule=Host(`schnittfest.gmbh`)" - - "traefik.http.routers.schnittfest-secure.tls.certresolver=tls-resolver" - - "traefik.http.middlewares.http-redirect.redirectscheme.scheme=https" - - "traefik.http.middlewares.http-redirect.redirectscheme.permanent=true" + - "traefik.http.routers.schnittfest.rule=Host(`schnittfest.gmbh`) || Host(`www.schnittfest.gmbh`)" + - "traefik.http.routers.schnittfest.entrypoints=websecure" + - "traefik.http.routers.schnittfest.tls=true" + - "traefik.http.routers.schnittfest.tls.certresolver=tls-resolver"