build both hugo and nodejs in an alpine container, bump hugo to 127, remove go, start work on building nodejs from scratch using optimized build options

This commit is contained in:
brooke 2024-06-07 04:22:22 -04:00
parent 5233735c71
commit ca6261ae29
4 changed files with 69 additions and 26 deletions

View file

@ -3,17 +3,16 @@ name: Build And Publish Docker
on:
push:
branches:
- "alpine"
- "master"
jobs:
build:
runs-on: debian-bookworm
strategy:
matrix:
hugo-version: ["0.126.3"]
node-version: ["22.2.0"]
go-version: ["1.22.3"]
strategy:
matrix:
hugo-version: ["0.127.0", "0.126.0", "0.125.0"]
node-version: ["22"]
steps:
- uses: actions/checkout@v3

View file

@ -1,22 +1,34 @@
ARG GO_VERSION="1.22.3"
FROM golang:${GO_VERSION}-alpine3.20
FROM alpine:3.20
ARG HUGO_VERSION="0.127.0"
ARG NODE_VERSION="22"
ARG HUGO_VERSION="0.126.3"
ARG NODE_VERSION="22.2.0"
RUN apk add --update --no-cache rsync unzip openssh libssl3 openssl-dev curl ninja pkgconf icu-dev git linux-headers libc6-compat make g++ gcc libgcc libstdc++ python3 py3-pip
# RUN apk add --update --no-cache rsync curl openssh git libc6-compatlibgcc libstdc++
WORKDIR /tmp
RUN curl -sL -o hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz && \
tar -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" && \
cp ./hugo /usr/bin/hugo && \
hugo version
RUN curl -sL -o node-${NODE_VERSION}.x.zip "https://github.com/nodejs/node/archive/refs/heads/v${NODE_VERSION}.x.zip" && unzip "node-${NODE_VERSION}.x.zip" &&\
cd node-${NODE_VERSION}.x && \
./configure --with-intl=system-icu --ninja --shared-openssl --shared && \
make && \
make install
# RUN curl -fsSL https://unofficial-builds.nodejs.org/download/release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64-musl.tar.gz -o node-v${NODE_VERSION}.tar.gz && \
# tar -xzf node-v${NODE_VERSION}.tar.gz && \
# mv /tmp/node-v${NODE_VERSION}-linux-x64-musl /usr/local/lib/nodejs && \
# ln -s /usr/local/lib/nodejs/bin/node /usr/local/bin/node && \
# ln -s /usr/local/lib/nodejs/bin/npm /usr/local/bin/npm && \
# npm i -g yarn pnpm
RUN apk update
RUN apk add tar gzip curl rsync bash xz
RUN mkdir /tmp/temph
RUN mkdir /home/app
WORKDIR /tmp/temph
RUN wget "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz"
RUN tar -xf "node-v${NODE_VERSION}-linux-x64.tar.xz"
RUN cp -R node-v${NODE_VERSION}-linux-x64/bin/* /usr/bin/
RUN npm i -g yarn pnpm
RUN wget "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz"
RUN tar -xf "hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz"
RUN mv ./hugo /usr/bin/hugo
WORKDIR /home/app
RUN rm -rfv /tmp/temph
ENTRYPOINT [ "/bin/bash" ]
RUN rm -rfv /tmp/* && \
apk del git linux-headers python3 py3-pip make g++ gcc ninja
ENTRYPOINT [ "/bin/sh" ]

30
Dockerfile.multistage Normal file
View file

@ -0,0 +1,30 @@
# Build stage
FROM alpine:3.20 AS build
ARG HUGO_VERSION="0.127.0"
ARG NODE_VERSION="22"
RUN apk add --update --no-cache rsync unzip openssh libssl3 openssl-dev curl ninja pkgconf icu-dev git linux-headers libc6-compat make g++ gcc libgcc libstdc++ python3 py3-pip
WORKDIR /tmp
RUN curl -sL -o hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz && \
tar -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" && \
cp ./hugo /usr/bin/hugo && \
hugo version
RUN curl -sL -o node-${NODE_VERSION}.x.zip "https://github.com/nodejs/node/archive/refs/heads/v${NODE_VERSION}.x.zip" && unzip "node-${NODE_VERSION}.x.zip" &&\
cd node-${NODE_VERSION}.x && \
./configure --with-intl=system-icu --ninja --shared-openssl --shared && \
make && \
make install
# Final stage
FROM alpine:3.20
RUN apk add --update --no-cache rsync openssh libssl3 openssl-dev libgcc libstdc++ libc6-compat
COPY --from=build /usr/bin/hugo /usr/bin/hugo
RUN mkdir /home/app
WORKDIR /home/app
ENTRYPOINT [ "/bin/sh" ]

View file

@ -25,6 +25,8 @@ docker run -p 1313:1313 -v .:/home/app -ti --network=host git.myco.systems/mycos
## Links
~~[Docker](https://hub.docker.com/r/betterweb/hugo)~~
~~[Github](https://github.com/BetterCorp/hugo)~~
[MycoSystems Packages](https://git.myco.systems/mycosystems/-/packages/container/hugo-ci/versions)
- ~~[BetterWeb Docker](https://hub.docker.com/r/betterweb/hugo)~~
- ~~[BeterCorp Github](https://github.com/BetterCorp/hugo)~~
- [MycoSystems Packages](https://git.myco.systems/mycosystems/-/packages/container/hugo-ci/versions)