mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 13:19:44 +02:00
Improvements for docker build process (#237)
This commit is contained in:
parent
afc2a4628d
commit
027e911907
5 changed files with 80 additions and 33 deletions
44
.github/workflows/build-and-push-docker-base-image.yaml
vendored
Normal file
44
.github/workflows/build-and-push-docker-base-image.yaml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
name: Build and push Docker base image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- ./Dockerfile.base
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
env:
|
||||||
|
ALPINE_VERSION: 3.15
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push-docker-base-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
file: Dockerfile.base
|
||||||
|
build_args:
|
||||||
|
- ALPINE_VERSION=${{ env.ALPINE_VERSION }}
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/plankanban/planka:base-latest
|
||||||
|
ghcr.io/plankanban/planka:base-${{ env.ALPINE_VERSION }}
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
node_modules
|
node_modules
|
||||||
docker-compose.override.yml
|
docker-compose.override.yml
|
||||||
|
|
||||||
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
36
Dockerfile
36
Dockerfile
|
@ -10,47 +10,19 @@ RUN npm install npm@latest --global \
|
||||||
COPY client .
|
COPY client .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
FROM node:lts-alpine
|
FROM ghcr.io/plankanban/planka:base-latest
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY server/.npmrc server/package.json server/package-lock.json ./
|
COPY server/.npmrc server/package.json server/package-lock.json ./
|
||||||
|
|
||||||
ARG ALPINE_VERSION=3.15
|
RUN npm install npm@latest --global \
|
||||||
ARG VIPS_VERSION=8.12.2
|
&& npm install --production
|
||||||
|
|
||||||
RUN apk -U upgrade \
|
|
||||||
&& apk add \
|
|
||||||
bash giflib glib lcms2 libexif \
|
|
||||||
libgsf libjpeg-turbo libpng librsvg libwebp \
|
|
||||||
orc pango tiff \
|
|
||||||
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/community/ \
|
|
||||||
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/main/ \
|
|
||||||
--no-cache \
|
|
||||||
&& apk add \
|
|
||||||
build-base giflib-dev glib-dev lcms2-dev libexif-dev \
|
|
||||||
libgsf-dev libjpeg-turbo-dev libpng-dev librsvg-dev libwebp-dev \
|
|
||||||
orc-dev pango-dev tiff-dev \
|
|
||||||
--virtual vips-dependencies \
|
|
||||||
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/community/ \
|
|
||||||
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/main/ \
|
|
||||||
--no-cache \
|
|
||||||
&& wget -O- https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.gz | tar xzC /tmp \
|
|
||||||
&& cd /tmp/vips-${VIPS_VERSION} \
|
|
||||||
&& ./configure \
|
|
||||||
&& make \
|
|
||||||
&& make install-strip \
|
|
||||||
&& cd $OLDPWD \
|
|
||||||
&& rm -rf /tmp/vips-${VIPS_VERSION} \
|
|
||||||
&& npm install npm@latest --global \
|
|
||||||
&& npm install --production \
|
|
||||||
&& apk del vips-dependencies --purge
|
|
||||||
|
|
||||||
COPY docker-start.sh start.sh
|
COPY docker-start.sh start.sh
|
||||||
COPY server .
|
COPY server .
|
||||||
|
|
||||||
RUN chmod +x start.sh \
|
RUN cp .env.sample .env
|
||||||
&& cp .env.sample .env
|
|
||||||
|
|
||||||
COPY --from=client-builder /app/build public
|
COPY --from=client-builder /app/build public
|
||||||
COPY --from=client-builder /app/build/index.html views
|
COPY --from=client-builder /app/build/index.html views
|
||||||
|
|
28
Dockerfile.base
Normal file
28
Dockerfile.base
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
FROM node:lts-alpine
|
||||||
|
|
||||||
|
ARG ALPINE_VERSION=3.15
|
||||||
|
ARG VIPS_VERSION=8.12.2
|
||||||
|
|
||||||
|
RUN apk -U upgrade \
|
||||||
|
&& apk add \
|
||||||
|
bash giflib glib lcms2 libexif \
|
||||||
|
libgsf libjpeg-turbo libpng librsvg libwebp \
|
||||||
|
orc pango tiff \
|
||||||
|
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/community/ \
|
||||||
|
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/main/ \
|
||||||
|
--no-cache \
|
||||||
|
&& apk add \
|
||||||
|
build-base giflib-dev glib-dev lcms2-dev libexif-dev \
|
||||||
|
libgsf-dev libjpeg-turbo-dev libpng-dev librsvg-dev libwebp-dev \
|
||||||
|
orc-dev pango-dev tiff-dev \
|
||||||
|
--virtual vips-dependencies \
|
||||||
|
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/community/ \
|
||||||
|
--repository https://alpine.global.ssl.fastly.net/alpine/v${ALPINE_VERSION}/main/ \
|
||||||
|
--no-cache \
|
||||||
|
&& wget -O- https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.gz | tar xzC /tmp \
|
||||||
|
&& cd /tmp/vips-${VIPS_VERSION} \
|
||||||
|
&& ./configure \
|
||||||
|
&& make \
|
||||||
|
&& make install-strip \
|
||||||
|
&& rm -rf /tmp/vips-${VIPS_VERSION} \
|
||||||
|
&& apk del vips-dependencies --purge
|
|
@ -14,9 +14,11 @@
|
||||||
"client:lint": "npm run lint --prefix client",
|
"client:lint": "npm run lint --prefix client",
|
||||||
"client:start": "npm start --prefix client",
|
"client:start": "npm start --prefix client",
|
||||||
"client:test": "npm test --prefix client",
|
"client:test": "npm test --prefix client",
|
||||||
|
"docker:build": "docker build -t ghcr.io/plankanban/planka:local -f Dockerfile .",
|
||||||
|
"docker:build:base": "docker build -t ghcr.io/plankanban/planka:base-local -f Dockerfile.base .",
|
||||||
"postinstall": "npm i --prefix server && npm i --prefix client",
|
"postinstall": "npm i --prefix server && npm i --prefix client",
|
||||||
"prepare": "husky install",
|
|
||||||
"lint": "npm run server:lint && npm run client:lint",
|
"lint": "npm run server:lint && npm run client:lint",
|
||||||
|
"prepare": "husky install",
|
||||||
"server:console": "npm run console --prefix server",
|
"server:console": "npm run console --prefix server",
|
||||||
"server:db:init": "npm run db:init --prefix server",
|
"server:db:init": "npm run db:init --prefix server",
|
||||||
"server:db:migrate": "npm run db:migrate --prefix server",
|
"server:db:migrate": "npm run db:migrate --prefix server",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue