You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey, nice project.
I just saw that in your docker image, you use the image nginx:alpine, that's very nice it's a lightweight image but you download nodejs + npm and you leave them in the final image. This create a heavy docker image with a lot of useless content (nodejs + npm are not used during runtime). You should avoid that. I saw two easy solutions:
Convert your two node script as shell script and run it without download anything from internet. Any LLM can do the transformation easily.
Use an intermediary image to run your scripts and copy/past the modified files into a fresh nginx:alpine image.
Example for 1: environment.common.sh
#!/bin/bash
INDEX_PATH="/usr/share/nginx/html/index.html"
SW_PATH="/usr/share/nginx/html/service-worker.js"
[[ !-f"$INDEX_PATH" ]] && { echo"Error: File not found at $INDEX_PATH";exit 1; }
INDEX_CONTENT=$(<"$INDEX_PATH")
SW_CONTENT=$(<"$SW_PATH")
VERSION=$(echo "$SW_CONTENT"| grep -oP 'const APP_VERSION = [\x27\x22](.*?)[\x27\x22]'| cut -d\' -f2 | cut -d\" -f2)
[[ -z"$VERSION" ]] && { echo"Error: APP_VERSION not found in $SW_PATH";exit 1; }
VERSION_TAG="<span>•</span><span>$VERSION</span>"
UPDATED_CONTENT=$(echo "$INDEX_CONTENT"| sed "s|<!-- app-version-placeholder -->|$VERSION_TAG|")echo"$UPDATED_CONTENT">"$INDEX_PATH"
environment.production.sh
#!/bin/bash
INDEX_PATH="/usr/share/nginx/html/index.html"
[[ !-f"$INDEX_PATH" ]] && { echo"Error: File not found at $INDEX_PATH";exit 1; }
INDEX_CONTENT=$(<"$INDEX_PATH")if [[ "$ENVIRONMENT"=="production" ]];then
METATAGS=$(cat <<EOF <meta name="robots" content="index, follow"> <meta name="author" content="MAZANOKE"> <meta property="og:title" content="MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser"> <meta property="og:description" content="Optimize images locally and privately by converting and compressing them offline in your browser. Supports JPG, PNG, WebP, HEIC, AVIF, GIF, SVG."> <meta property="og:url" content="https://www.mazanoke.com"> <meta property="og:image" content="https://mazanoke.com/assets/images/og-image.jpg"> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> <meta property="og:type" content="website"> <meta property="og:site_name" content="MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="MAZANOKE | Online Image Optimizer That Runs Privately in Your Browser"> <meta name="twitter:description" content="Optimize images locally and privately by converting and compressing them offline in your browser. Supports JPG, PNG, WebP, HEIC, AVIF, GIF, SVG."> <meta name="twitter:image" content="https://mazanoke.com/assets/images/og-image.jpg"> <link rel="canonical" href="https://www.mazanoke.com"> <meta name="keywords" content="online image optimizer, image compression, local image processing, offline image optimizer, private image optimizer, convert svg, convert heic, convert png, convert jpg, convert gif">EOF)
INDEX_CONTENT=$(echo "$INDEX_CONTENT"| sed 's|<meta name="robots" content="noindex, nofollow">|'"$METATAGS"'|')fiecho"$INDEX_CONTENT">"$INDEX_PATH"
Example for 2:
FROM nginx:alpine AS prepare
COPY ./index.html /usr/share/nginx/html/index.html
COPY ./assets /usr/share/nginx/html/assets
COPY ./favicon.ico /usr/share/nginx/html
COPY ./manifest.json /usr/share/nginx/html
COPY ./service-worker.js /usr/share/nginx/html
RUN apk add --no-cache nodejs npm
WORKDIR /scripts
RUN npm init -y
RUN npm install dotenv
COPY ./scripts /scripts
COPY .env /scripts/.env
RUN node /scripts/environment.common.js
RUN node /scripts/environment.prod.js
FROM nginx:alpine
COPY --from=prepare /usr/share/nginx/html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
NB: The examples can be broken, I do it from scratch without testing but the base is here.
The text was updated successfully, but these errors were encountered:
Hey, nice project.
I just saw that in your docker image, you use the image
nginx:alpine
, that's very nice it's a lightweight image but you download nodejs + npm and you leave them in the final image. This create a heavy docker image with a lot of useless content (nodejs + npm are not used during runtime). You should avoid that. I saw two easy solutions:nginx:alpine
image.Example for 1:
environment.common.sh
environment.production.sh
Example for 2:
NB: The examples can be broken, I do it from scratch without testing but the base is here.
The text was updated successfully, but these errors were encountered: