mirror of
https://github.com/Lissy93/dashy.git
synced 2024-12-23 17:03:59 +03:00
🔀 Merge pull request #457 from Lissy93/ARCH/docker-multi-arch
[ARCH] Multi-architecture Docker image
This commit is contained in:
commit
31702a62c3
@ -80,17 +80,17 @@ jobs:
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./docker/Dockerfile-multi-arch
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
push: true
|
||||
|
||||
- name: 💬 Set Docker Hub Description
|
||||
uses: peter-evans/dockerhub-description@v2
|
||||
with:
|
||||
repository: lissy93/dashy
|
||||
readme-filepath: ./README.md
|
||||
short-description: Dashy - A self-hosted start page for your server
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
# - name: 💬 Set Docker Hub Description
|
||||
# uses: peter-evans/dockerhub-description@v2
|
||||
# with:
|
||||
# repository: lissy93/dashy
|
||||
# readme-filepath: ./README.md
|
||||
# short-description: Dashy - A self-hosted start page for your server
|
||||
# username: ${{ secrets.DOCKER_USERNAME }}
|
||||
# password: ${{ secrets.DOCKER_PASSWORD }}
|
40
.github/workflows/docker-release.yml
vendored
40
.github/workflows/docker-release.yml
vendored
@ -1,40 +0,0 @@
|
||||
# Test and build the Docker container after a release
|
||||
# Then push it to GH container registry if all checks pass
|
||||
name: Build & Publish Docker Image
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
jobs:
|
||||
build-and-push-image:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
# Get the code
|
||||
- name: Checkout repository 🛎️
|
||||
uses: actions/checkout@v2
|
||||
# Log into ghcr.io
|
||||
- name: Log in to the Container registry 🔑
|
||||
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Get release version, for Docker tag
|
||||
- name: Extract metadata (tags, labels) for Docker 🗂️
|
||||
id: meta
|
||||
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
# Build the container, and push if successful
|
||||
- name: Build and push Docker image ⚒️
|
||||
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
48
Dockerfile
48
Dockerfile
@ -1,4 +1,30 @@
|
||||
FROM node:lts-alpine3.14
|
||||
FROM node:14.17.5-alpine AS BUILD_IMAGE
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
|
||||
|
||||
# Install additional tools needed on arm64 and armv7
|
||||
RUN \
|
||||
case "${TARGETPLATFORM}" in \
|
||||
'linux/arm64') apk add --no-cache python make g++ ;; \
|
||||
'linux/arm/v7') apk add --no-cache python make g++ ;; \
|
||||
esac
|
||||
|
||||
# Create and set the working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Install app dependencies
|
||||
COPY package.json yarn.lock ./
|
||||
RUN yarn install --frozen-lockfile --network-timeout 1000000
|
||||
|
||||
# Copy over all project files and folders to the working directory
|
||||
COPY . ./
|
||||
|
||||
# Build initial app for production
|
||||
RUN yarn build
|
||||
|
||||
# Build the final image
|
||||
FROM node:14.17.5-alpine
|
||||
|
||||
# Define some ENV Vars
|
||||
ENV PORT=80 \
|
||||
@ -8,24 +34,18 @@ ENV PORT=80 \
|
||||
# Create and set the working directory
|
||||
WORKDIR ${DIRECTORY}
|
||||
|
||||
# Copy over both 'package.json' and 'package-lock.json' (if available)
|
||||
COPY package*.json ./
|
||||
COPY yarn.lock ./
|
||||
# Install tini for initialization and tzdata for setting timezone
|
||||
RUN apk add --no-cache tzdata tini
|
||||
|
||||
# Install project dependencies
|
||||
RUN yarn
|
||||
# Copy built application from build phase
|
||||
COPY --from=BUILD_IMAGE /app ./
|
||||
|
||||
# Copy over all project files and folders to the working directory
|
||||
COPY . .
|
||||
|
||||
# Build initial app for production
|
||||
RUN yarn build
|
||||
# Finally, run start command to serve up the built application
|
||||
ENTRYPOINT [ "/sbin/tini", "--" ]
|
||||
CMD [ "yarn", "build-and-start" ]
|
||||
|
||||
# Expose given port
|
||||
EXPOSE ${PORT}
|
||||
|
||||
# Finally, run start command to serve up the built application
|
||||
CMD [ "yarn", "build-and-start"]
|
||||
|
||||
# Run simple healthchecks every 5 mins, to check the Dashy's everythings great
|
||||
HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check
|
||||
|
Loading…
Reference in New Issue
Block a user