From 34d82166e4c60a42be5a80f0711923d7a97ae4c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=BCller-Downing?= Date: Tue, 22 Sep 2020 22:30:37 +1000 Subject: [PATCH 1/6] Trim Docker image size * Only copy production node dependencies into image * Use multi-stage build to make use of node dependency cache * Use non-root user --- Dockerfile | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 566d1d4a..9f3070f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,39 @@ -FROM node:12.18-alpine - +# Build image +FROM node:12.18-alpine AS build ARG DATABASE_TYPE - ENV DATABASE_URL "postgresql://umami:umami@db:5432/umami" \ DATABASE_TYPE=$DATABASE_TYPE +WORKDIR /build -WORKDIR /app -EXPOSE 3000 +COPY package.json yarn.lock /build/ -COPY package.json yarn.lock /app/ -RUN yarn install --frozen-lockfile +# Install only the production dependencies +RUN yarn install --production -COPY . /app +# Cache these modules for production +RUN cp -R node_modules/ prod_node_modules/ + +# Install development dependencies +RUN yarn install + +COPY . /build RUN yarn build +# Production image +FROM node:12.18-alpine AS production +WORKDIR /app + +# Copy cached dependencies +COPY --from=build /build/prod_node_modules ./node_modules + +# Copy generated Prisma client +COPY --from=build /build/node_modules/\.prisma/ ./node_modules/\.prisma/ + +COPY --from=build /build/yarn.lock /build/package.json ./ +COPY --from=build /build/.next ./.next +COPY --from=build /build/public ./public + +USER node + +EXPOSE 3000 CMD ["yarn", "start"] From 17a40d15e3975ee7ad08ba18dbbd632378984e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=BCller-Downing?= Date: Wed, 23 Sep 2020 21:06:50 +1000 Subject: [PATCH 2/6] Use frozen lockfile when installing dependencies with yarn --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9f3070f3..b9c3a027 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,13 @@ WORKDIR /build COPY package.json yarn.lock /build/ # Install only the production dependencies -RUN yarn install --production +RUN yarn install --frozen-lockfile # Cache these modules for production RUN cp -R node_modules/ prod_node_modules/ # Install development dependencies -RUN yarn install +RUN yarn install --frozen-lockfile COPY . /build RUN yarn build @@ -27,7 +27,7 @@ WORKDIR /app COPY --from=build /build/prod_node_modules ./node_modules # Copy generated Prisma client -COPY --from=build /build/node_modules/\.prisma/ ./node_modules/\.prisma/ +COPY --from=build /build/node_modules/.prisma/ ./node_modules/.prisma/ COPY --from=build /build/yarn.lock /build/package.json ./ COPY --from=build /build/.next ./.next From 8fb2a8aa840279c117a2a4bdd1b224952fe743df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=BCller-Downing?= Date: Thu, 24 Sep 2020 13:12:38 +1000 Subject: [PATCH 3/6] Install production dependencies with lockfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b9c3a027..c2110abc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /build COPY package.json yarn.lock /build/ # Install only the production dependencies -RUN yarn install --frozen-lockfile +RUN yarn install --production --frozen-lockfile # Cache these modules for production RUN cp -R node_modules/ prod_node_modules/ From 67bab5ff24685d164246a7b2f1198661ff8781d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigmundur=20M=C3=B8rk=C3=B8re?= Date: Thu, 24 Sep 2020 07:11:58 +0000 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20Added=20language:=20F?= =?UTF-8?q?aroese?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/fo-FO.json | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/lang.js | 4 +++ 2 files changed, 99 insertions(+) create mode 100644 lang/fo-FO.json diff --git a/lang/fo-FO.json b/lang/fo-FO.json new file mode 100644 index 00000000..c852a001 --- /dev/null +++ b/lang/fo-FO.json @@ -0,0 +1,95 @@ +{ + "button.add-account": "Ger brúkara", + "button.add-website": "Legg heimasíðu til", + "button.back": "Aftur", + "button.cancel": "Strika", + "button.change-password": "Broyt loyniorð", + "button.copy-to-clipboard": "Kopier til clipboard", + "button.date-range": "Vel dato", + "button.delete": "Sletta", + "button.edit": "Ger broyting", + "button.login": "Rita inn", + "button.more": "Meira", + "button.refresh": "Endurskapa", + "button.reset": "Nulstilla", + "button.save": "Goym", + "button.single-day": "Einkultur dagur", + "button.view-details": "Vís upplýsingar", + "label.accounts": "Brúkarar", + "label.administrator": "Administrator", + "label.confirm-password": "Vátta loyniorð", + "label.current-password": "Núverandi loyniorð", + "label.custom-range": "Custom range", + "label.dashboard": "Yvirlitsskíggi", + "label.default-date-range": "Standard dato", + "label.domain": "Økisnavn", + "label.enable-share-url": "Aktivera deil leinki", + "label.invalid": "Ógilda", + "label.invalid-domain": "Ógilda økisnavn", + "label.last-days": "Seinastu {x} dagarnar", + "label.last-hours": "Seinastu {x} tímanar", + "label.logged-in-as": "Ritaður inn sum {username}", + "label.logout": "Rita út", + "label.name": "Navn", + "label.new-password": "Nýtt loyniorð", + "label.password": "Loyniorð", + "label.passwords-dont-match": "Loyniorðini eru ikki eins", + "label.profile": "Brúkari", + "label.required": "Krav", + "label.settings": "Instillingar", + "label.this-month": "Hendan mánan", + "label.this-week": "Hesa vikuna", + "label.this-year": "Hetta árið", + "label.timezone": "Tíðarsona", + "label.today": "Í dag", + "label.unknown": "Ókent", + "label.username": "Brúkaranavn", + "label.websites": "Heimasíður", + "message.active-users": "{x} í løtuni {x, plural, one {vitjandi} other { vitjandi }}", + "message.confirm-delete": "Ert tú sikkur at tú ynskir at sletta {target}?", + "message.copied": "Kopiera!", + "message.delete-warning": "Øll data ið er knýtt at verður eisini sletta.", + "message.failure": "Okkurt bleiv gali.", + "message.get-share-url": "Fá leinkju sum tú kanst deila", + "message.get-tracking-code": "Fá sporing kotu", + "message.go-to-settings": "Far til instillingar", + "message.incorrect-username-password": "Skeivt brúkaranavn/loyniorð.", + "message.no-data-available": "Eingin data tøk.", + "message.no-websites-configured": "Tú hevur onga heimasíðu stillaða til.", + "message.page-not-found": "Síðan bleiv ikki funnin.", + "message.powered-by": "Powered by {name}", + "message.save-success": "Goymt.", + "message.share-url": "Hetta er tann almenna leinkjan av {target}.", + "message.track-stats": "Fyri at spora hagtøl fyri {target}, koyr kotuna í {head} partin á tínari heimasíðu.", + "message.type-delete": "Skriva {delete} í feltið fyri at vátta", + "metrics.actions": "Gerðir", + "metrics.average-visit-time": "Miðal vitjurnartíð ", + "metrics.bounce-rate": "Bounce prosenttal", + "metrics.browsers": "Kagar", + "metrics.countries": "Lond", + "metrics.device.desktop": "Borðtelda", + "metrics.device.laptop": "Fartelda", + "metrics.device.mobile": "Telefon", + "metrics.device.tablet": "Teldil", + "metrics.devices": "Eindir", + "metrics.events": "Hendingar/tiltøk", + "metrics.filter.combined": "Samansett", + "metrics.filter.domain-only": "Bara økisnavn", + "metrics.filter.raw": "Óviðgjørt", + "metrics.operating-systems": "Stýrikervi", + "metrics.page-views": "Opnaðar síðir", + "metrics.pages": "Síðir", + "metrics.referrers": "Framsendingar", + "metrics.unique-visitors": "Einsýna vitjanir", + "metrics.views": "Vitjanir", + "metrics.visitors": "Vitjandi", + "title.add-account": "Ger brúkara", + "title.add-website": "Legg avtrat heimasíðu", + "title.change-password": "Skift loyniorð", + "title.delete-account": "Sletta brúkara", + "title.delete-website": "Sletta heimasíðu", + "title.edit-account": "Broyt brúkara", + "title.edit-website": "Broyt heimasíðu", + "title.share-url": "Deil leinku", + "title.tracking-code": "Spori kota" +} diff --git a/lib/lang.js b/lib/lang.js index 066df152..5e283ee4 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -13,6 +13,7 @@ import mnMNMessages from 'lang-compiled/mn-MN.json'; import daMessages from 'lang-compiled/da-DK.json'; import svMessages from 'lang-compiled/sv-SE.json'; import grMessages from 'lang-compiled/el-GR.json'; +import foMessages from 'lang-compiled/fo-FO.json'; export const messages = { 'en-US': enMessages, @@ -28,6 +29,7 @@ export const messages = { 'da-DK': daMessages, 'sv-SE': svMessages, 'el-GR': grMessages, + 'fo-FO': foMessages, }; export const dateLocales = { @@ -44,6 +46,7 @@ export const dateLocales = { 'fr-FR': fr, 'mn-MN': enUS, 'el-GR': el, + 'fo-FO': da, }; export const menuOptions = [ @@ -60,6 +63,7 @@ export const menuOptions = [ { label: 'Русский', value: 'ru-RU', display: 'ru' }, { label: 'Svenska', value: 'sv-SE', display: 'sv' }, { label: 'Turkish', value: 'tr-TR', display: 'tr' }, + { label: 'Føroyskt', value: 'fo-FO', display: 'fø' }, ]; export function dateFormat(date, str, locale) { From 446c40ff66b7eda3f62318de3968aa73587b1fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigmundur=20M=C3=B8rk=C3=B8re?= Date: Fri, 25 Sep 2020 01:15:43 +0000 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20Minor=20changes?= =?UTF-8?q?=20to=20Faroese=20translations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/fo-FO.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lang/fo-FO.json b/lang/fo-FO.json index c852a001..478dc212 100644 --- a/lang/fo-FO.json +++ b/lang/fo-FO.json @@ -19,13 +19,13 @@ "label.administrator": "Administrator", "label.confirm-password": "Vátta loyniorð", "label.current-password": "Núverandi loyniorð", - "label.custom-range": "Custom range", + "label.custom-range": "Tillaga spenni", "label.dashboard": "Yvirlitsskíggi", "label.default-date-range": "Standard dato", "label.domain": "Økisnavn", - "label.enable-share-url": "Aktivera deil leinki", + "label.enable-share-url": "Aktivera deili leinki", "label.invalid": "Ógilda", - "label.invalid-domain": "Ógilda økisnavn", + "label.invalid-domain": "Ógilt økisnavn", "label.last-days": "Seinastu {x} dagarnar", "label.last-hours": "Seinastu {x} tímanar", "label.logged-in-as": "Ritaður inn sum {username}", @@ -36,7 +36,7 @@ "label.passwords-dont-match": "Loyniorðini eru ikki eins", "label.profile": "Brúkari", "label.required": "Krav", - "label.settings": "Instillingar", + "label.settings": "Stillingar", "label.this-month": "Hendan mánan", "label.this-week": "Hesa vikuna", "label.this-year": "Hetta árið", @@ -50,16 +50,16 @@ "message.copied": "Kopiera!", "message.delete-warning": "Øll data ið er knýtt at verður eisini sletta.", "message.failure": "Okkurt bleiv gali.", - "message.get-share-url": "Fá leinkju sum tú kanst deila", - "message.get-tracking-code": "Fá sporing kotu", - "message.go-to-settings": "Far til instillingar", + "message.get-share-url": "Fá leinku sum tú kanst deila", + "message.get-tracking-code": "Fá sporings kotu", + "message.go-to-settings": "Far til stillingar", "message.incorrect-username-password": "Skeivt brúkaranavn/loyniorð.", - "message.no-data-available": "Eingin data tøk.", - "message.no-websites-configured": "Tú hevur onga heimasíðu stillaða til.", + "message.no-data-available": "Einki data tøk.", + "message.no-websites-configured": "Tú hevur ongar heimasíður stillaða til.", "message.page-not-found": "Síðan bleiv ikki funnin.", "message.powered-by": "Powered by {name}", "message.save-success": "Goymt.", - "message.share-url": "Hetta er tann almenna leinkjan av {target}.", + "message.share-url": "Hetta er tann almenna leinkan av {target}.", "message.track-stats": "Fyri at spora hagtøl fyri {target}, koyr kotuna í {head} partin á tínari heimasíðu.", "message.type-delete": "Skriva {delete} í feltið fyri at vátta", "metrics.actions": "Gerðir", @@ -71,12 +71,12 @@ "metrics.device.laptop": "Fartelda", "metrics.device.mobile": "Telefon", "metrics.device.tablet": "Teldil", - "metrics.devices": "Eindir", + "metrics.devices": "Tóleindir", "metrics.events": "Hendingar/tiltøk", "metrics.filter.combined": "Samansett", "metrics.filter.domain-only": "Bara økisnavn", "metrics.filter.raw": "Óviðgjørt", - "metrics.operating-systems": "Stýrikervi", + "metrics.operating-systems": "Stýrikervir", "metrics.page-views": "Opnaðar síðir", "metrics.pages": "Síðir", "metrics.referrers": "Framsendingar", @@ -84,7 +84,7 @@ "metrics.views": "Vitjanir", "metrics.visitors": "Vitjandi", "title.add-account": "Ger brúkara", - "title.add-website": "Legg avtrat heimasíðu", + "title.add-website": "Legg heimasíðu avtrat", "title.change-password": "Skift loyniorð", "title.delete-account": "Sletta brúkara", "title.delete-website": "Sletta heimasíðu", From be186483f57c6a6383fa03e0a0b1bd4ebd082c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigmundur=20M=C3=B8rk=C3=B8re?= Date: Fri, 25 Sep 2020 01:24:17 +0000 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=90=9B=20FIX:=20One=20wrong=20word?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/fo-FO.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/fo-FO.json b/lang/fo-FO.json index 478dc212..800f91c7 100644 --- a/lang/fo-FO.json +++ b/lang/fo-FO.json @@ -23,7 +23,7 @@ "label.dashboard": "Yvirlitsskíggi", "label.default-date-range": "Standard dato", "label.domain": "Økisnavn", - "label.enable-share-url": "Aktivera deili leinki", + "label.enable-share-url": "Virkja deili leinki", "label.invalid": "Ógilda", "label.invalid-domain": "Ógilt økisnavn", "label.last-days": "Seinastu {x} dagarnar",