Merge pull request #224 from ravensorb/master

Updates to Docker Build Process
This commit is contained in:
Roger Far 2023-03-16 11:36:41 -06:00 committed by GitHub
commit cb2fa9f155
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 53 additions and 25 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@ node_modules/
RealDebridClient.zip
server/RdtClient.Web/appsettings.Development.json
data
Dockerfile.dev

View file

@ -45,7 +45,7 @@ RUN \
fi
# Stage 3 - Build runtime image
FROM ghcr.io/linuxserver/baseimage-ubuntu:bionic
FROM ghcr.io/linuxserver/baseimage-alpine:3.17
ARG TARGETPLATFORM
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
ARG BUILDPLATFORM
@ -65,26 +65,21 @@ ENV RDTCLIENT_BRANCH="main"
RUN \
mkdir -p /data/downloads /data/db || true && \
echo "**** Updating package information ****" && \
apt-get update -y -qq && \
apk update && \
echo "**** Install pre-reqs ****" && \
apt-get install -y -qq wget dos2unix && \
apt-get install -y libc6 libgcc1 libgssapi-krb5-2 libssl1.1 libstdc++6 zlib1g libicu60 && \
apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib && \
echo "**** Installing dotnet ****" && \
wget -q https://dot.net/v1/dotnet-install.sh && \
chmod +x ./dotnet-install.sh && \
bash ./dotnet-install.sh -c LTS -v latest --runtime dotnet --install-dir /usr/share/dotnet && \
bash ./dotnet-install.sh -c LTS -v latest --runtime aspnetcore --install-dir /usr/share/dotnet && \
echo "**** Cleaning image ****" && \
apt-get -y -qq -o Dpkg::Use-Pty=0 clean && apt-get -y -qq -o Dpkg::Use-Pty=0 purge && \
apk add aspnetcore6-runtime && \
echo "**** Setting permissions ****" && \
chown -R abc:abc /data && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/cache/apk/* \
/var/tmp/* || true
ENV PATH "$PATH:/usr/share/dotnet"
# Copy files for app
WORKDIR /app
COPY --from=dotnet-build-env /appserver/server/out .
COPY --from=node-build-env /appclient/client/out ./wwwroot
@ -92,4 +87,7 @@ COPY --from=node-build-env /appclient/root/ /
# ports and volumes
EXPOSE 6500
VOLUME ["/config", "/data" ]
VOLUME [ "/data" ]
# Check Status
HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD curl --fail http://localhost:6500 || exit

View file

@ -2,8 +2,9 @@
param(
[string]$TempPath="c:/Temp/RtdClient",
[string]$Dockerfile="Dockerfile",
[switch]$AutoAttach,
[switch]$IgnoreBuildCache,
[switch]$SkipCache,
[string]$BuildProgress="auto"
)
@ -17,8 +18,8 @@ Write-Host "removing Container (if exists)"
docker rm rdtclientdev
Write-Host "Building Container"
$dockerArgs = @( "build", "--force-rm", "--tag", "rdtclientdev", "--progress=$BuildProgress", "." )
if ($IgnoreBuildCache.IsPresent) { $dockerArgs += @("--no-cace" ) }
$dockerArgs = @( "build", "--force-rm", "--tag", "rdtclientdev", "--progress=$BuildProgress", "--file", $Dockerfile, "." )
if ($SkipCache.IsPresent) { $dockerArgs += @("--no-cache" ) }
& docker $dockerArgs
Write-Host "Starting Container"

View file

@ -4,9 +4,9 @@ services:
rdtclient:
image: rogerfar/rdtclient
container_name: rdtclient
build:
context: .
dockerfile: Dockerfile
# build:
# context: .
# dockerfile: Dockerfile
environment:
- PUID=1001
- PGID=1001
@ -20,3 +20,9 @@ services:
max-size: 10m
ports:
- '6500:6500'
healthcheck:
test: curl --fail http://localhost:6500 || exit 1
interval: 30s
retries: 3
start_period: 30s
timeout: 30s

View file

@ -1,4 +1,4 @@
#!/bin/pwsh
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Helper script to execute docker buildx
@ -34,12 +34,28 @@
param(
[string]$Version = "",
[string]$DockerAccount = "rogerfar",
[string]$Platforms = "linux/arm/v7,linux/arm64/v8,linux/amd64"
[string]$Platforms = "linux/arm/v7,linux/arm64/v8,linux/amd64",
[string]$Dockerfile = "Dockerfile",
[switch]$SkipPush,
[switch]$SkipCache,
[switch]$OutputToDocker
)
$imageName = "$($DockerAccount)/rdtclient"
$dockerArgs = @( "buildx", "build", "--no-cache", "--push", "--platform", $Platforms, "--tag", "$($imageName):latest", "." )
$dockerArgs = @( "buildx", "build", "--network=default", "--platform", $Platforms, "--tag", "$($imageName):latest", "--file", $Dockerfile, "." )
if (-Not $SkipPush.IsPresent) {
$dockerArgs += @("--push")
}
if ($SkipCache.IsPresent) {
$dockerArgs += @("--no-cache")
}
if ($OutputToDocker.IsPresent) {
$dockerArgs += @("--output=type=docker")
}
if ([string]::IsNullOrEmpty($Version)) {
$Version = (Get-Content "package.json" | ConvertFrom-Json).version
@ -49,4 +65,5 @@ $dockerArgs += @("--tag", "$($imageName):$($Version)" )
$dockerApps += @("--build-arg", "VERSION=$($Version)" )
Write-Host "Generating docker image $imageName for $Platforms"
Write-Host "Args: $dockerArgs"
& docker $dockerArgs

View file

@ -10,4 +10,4 @@
# permissions
echo "Setting permissions"
chown -R abc:abc \
/app /data /config
/app /data

View file

@ -1 +1 @@
oneshot
oneshot

View file

@ -1 +1 @@
etc/s6-overlay/s6-rc.d/init-rdt-client/run
/etc/s6-overlay/s6-rc.d/init-rdt-client/run

5
root/etc/s6-overlay/s6-rc.d/svc-rdt-client/run Normal file → Executable file
View file

@ -5,6 +5,11 @@ if [ -n "${UMASK_SET}" ] && [ -z "${UMASK}" ]; then
umask ${UMASK_SET}
fi
# permissions
echo "Setting permissions"
chown -R abc:abc \
/app /data
echo "Changing to /app folder"
cd /app || exit

View file

@ -1 +1 @@
longrun
longrun