feat: Updates to docker file and gh action

* Clean up Dockerfile
* Add health check to Dockerfile
* Update gh action versions
This commit is contained in:
Brandon Skrtich 2022-06-02 05:55:01 +00:00
parent 5f2d6f4d5e
commit 4900649908
3 changed files with 40 additions and 23 deletions

View File

@ -3,8 +3,15 @@
name: Build and Push Docker Image name: Build and Push Docker Image
on: on:
# Allows you to run workflow manually from Actions tab
workflow_dispatch:
inputs:
tags:
description: 'Docker Tag'
required: true
default: 'latest'
push: push:
branches: [master] branches: [main,master]
tags: tags:
- 'v*.*.*' - 'v*.*.*'
# Only build when files in these directories have been changed # Only build when files in these directories have been changed
@ -13,8 +20,6 @@ on:
- server/** - server/**
- index.js - index.js
- package.json - package.json
# Allows you to run workflow manually from Actions tab
workflow_dispatch:
jobs: jobs:
build: build:
@ -23,24 +28,25 @@ jobs:
steps: steps:
- name: Check out - name: Check out
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v3 uses: docker/metadata-action@v4
with: with:
images: advplyr/audiobookshelf,ghcr.io/${{ github.repository_owner }}/audiobookshelf images: advplyr/audiobookshelf,ghcr.io/${{ github.repository_owner }}/audiobookshelf
tags: | tags: |
type=edge,branch=master type=edge,branch=master
type=semver,pattern={{version}} type=semver,pattern={{version}}
- name: Setup QEMU - name: Setup QEMU
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v2
- name: Cache Docker layers - name: Cache Docker layers
uses: actions/cache@v2 uses: actions/cache@v3
with: with:
path: /tmp/.buildx-cache path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }} key: ${{ runner.os }}-buildx-${{ github.sha }}
@ -48,22 +54,22 @@ jobs:
${{ runner.os }}-buildx- ${{ runner.os }}-buildx-
- name: Login to Dockerhub - name: Login to Dockerhub
uses: docker/login-action@v1 uses: docker/login-action@v2
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }} password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to ghcr - name: Login to ghcr
uses: docker/login-action@v1 uses: docker/login-action@v2
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_PASSWORD }} password: ${{ secrets.GHCR_PASSWORD }}
- name: Build image - name: Build image
uses: docker/build-push-action@v2 uses: docker/build-push-action@v3
with: with:
tags: ${{ steps.meta.outputs.tags }} tags: ${{ github.event.inputs.tags || steps.meta.outputs.tags }}
context: . context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7 platforms: linux/amd64,linux/arm64,linux/arm/v7
push: true push: true

View File

@ -7,13 +7,23 @@ RUN npm run generate
### STAGE 1: Build server ### ### STAGE 1: Build server ###
FROM node:16-alpine FROM node:16-alpine
RUN apk update && apk add --no-cache --update ffmpeg
ENV NODE_ENV=production ENV NODE_ENV=production
RUN apk update && \
apk add --no-cache --update \
curl \
tzdata \
ffmpeg
COPY --from=build /client/dist /client/dist COPY --from=build /client/dist /client/dist
COPY index.js index.js COPY index.js package* /
COPY package-lock.json package-lock.json
COPY package.json package.json
COPY server server COPY server server
RUN npm ci --only=production RUN npm ci --only=production
EXPOSE 80 EXPOSE 80
HEALTHCHECK \
--interval=30s \
--timeout=3s \
--start-period=10s \
CMD curl -f http://127.0.0.1/ping || exit 1
CMD ["npm", "start"] CMD ["npm", "start"]

View File

@ -69,7 +69,7 @@ docker run -d \
-e AUDIOBOOKSHELF_GID=100 \ -e AUDIOBOOKSHELF_GID=100 \
-p 13378:80 \ -p 13378:80 \
-v </path/to/audiobooks>:/audiobooks \ -v </path/to/audiobooks>:/audiobooks \
-v </path/to/your/podcasts>:/podcasts \ -v </path/to/podcasts>:/podcasts \
-v </path/to/config>:/config \ -v </path/to/config>:/config \
-v </path/to/metadata>:/metadata \ -v </path/to/metadata>:/metadata \
--name audiobookshelf \ --name audiobookshelf \
@ -90,6 +90,7 @@ docker start audiobookshelf
### docker-compose.yml ### ### docker-compose.yml ###
services: services:
audiobookshelf: audiobookshelf:
container_name: audiobookshelf
image: ghcr.io/advplyr/audiobookshelf:latest image: ghcr.io/advplyr/audiobookshelf:latest
environment: environment:
- AUDIOBOOKSHELF_UID=99 - AUDIOBOOKSHELF_UID=99
@ -97,8 +98,8 @@ services:
ports: ports:
- 13378:80 - 13378:80
volumes: volumes:
- </path/to/your/audiobooks>:/audiobooks - </path/to/audiobooks>:/audiobooks
- </path/to/your/podcasts>:/podcasts - </path/to/podcasts>:/podcasts
- </path/to/config>:/config - </path/to/config>:/config
- </path/to/metadata>:/metadata - </path/to/metadata>:/metadata
``` ```