diff --git a/README.md b/README.md index 260dab2..164df3d 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,12 @@ Docker images for Firebird Database. |`ghcr.io/fdcastel/firebird`|Dockerfile|OS|Last modified| |:-|:-:|:-:|:-:| -|`5`, `5-bookworm`, `bookworm`, `latest`|[Dockerfile](./generated/5/bookworm/Dockerfile)|Debian 12.5|2024-06-15| -|`5-jammy`, `jammy`|[Dockerfile](./generated/5/jammy/Dockerfile)|Ubuntu 22.04|2024-06-15| -|`4`, `4-bookworm`|[Dockerfile](./generated/4/bookworm/Dockerfile)|Debian 12.5|2024-06-15| -|`4-jammy`|[Dockerfile](./generated/4/jammy/Dockerfile)|Ubuntu 22.04|2024-06-15| -|`3`, `3-bookworm`|[Dockerfile](./generated/3/bookworm/Dockerfile)|Debian 12.5|2024-06-15| -|`3-jammy`|[Dockerfile](./generated/3/jammy/Dockerfile)|Ubuntu 22.04|2024-06-15| +|`5`, `5-bookworm`, `bookworm`, `latest`|[amd64](./generated/5/linux/amd64/bookworm/Dockerfile), [arm64](./generated/5/linux/arm64/bookworm/Dockerfile)|Debian 12.5|2024-06-16| +|`5-jammy`, `jammy`|[amd64](./generated/5/linux/amd64/jammy/Dockerfile), [arm64](./generated/5/linux/arm64/jammy/Dockerfile)|Ubuntu 22.04|2024-06-16| +|`4`, `4-bookworm`|[amd64](./generated/4/linux/amd64/bookworm/Dockerfile)|Debian 12.5|2024-06-16| +|`4-jammy`|[amd64](./generated/4/linux/amd64/jammy/Dockerfile)|Ubuntu 22.04|2024-06-16| +|`3`, `3-bookworm`|[amd64](./generated/3/linux/amd64/bookworm/Dockerfile)|Debian 12.5|2024-06-16| +|`3-jammy`|[amd64](./generated/3/linux/amd64/jammy/Dockerfile)|Ubuntu 22.04|2024-06-16| diff --git a/assets.json b/assets.json index 5f035f6..1d8312c 100644 --- a/assets.json +++ b/assets.json @@ -1,11 +1,18 @@ [ { - "tag": "v5.0.0", - "name": "Firebird-5.0.0.1306-0-linux-x64.tar.gz", - "url": "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.0/Firebird-5.0.0.1306-0-linux-x64.tar.gz", - "os": "linux", - "arch": "amd64", - "sha256": "137b356ea464e224b6ed1241e6dba95b6b950ff1feef91696d4071d4da880768", + "tag": "v5.0.1", + "platforms": { + "linux/amd64": { + "name": "Firebird-5.0.1.1469-0-linux-x64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-x64.tar.gz", + "sha256": "e1023b005e5d6db8f717af032e91f0f94aa7a8dbe0e78f250931214ca0a21e57" + }, + "linux/arm64": { + "name": "Firebird-5.0.1.1469-0-linux-arm64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-arm64.tar.gz", + "sha256": "46b3f4f170458a93365c67118c062ba8509903fe8293bf8a62e7bd8a388e2d06" + } + }, "images": ["bookworm", "jammy"], "imageTags": { "bookworm": ["latest", "bookworm", "5"], @@ -13,24 +20,38 @@ } }, { - "tag": "v4.0.4", - "name": "Firebird-4.0.4.3010-0.amd64.tar.gz", - "url": "https://github.com/FirebirdSQL/firebird/releases/download/v4.0.4/Firebird-4.0.4.3010-0.amd64.tar.gz", - "os": "linux", - "arch": "amd64", - "sha256": "ef589301c5e13a1f8481e1e38c453641ef5082344bf69edb51f8aa9f036bcaca", + "tag": "v4.0.5", + "platforms": { + "linux/amd64": { + "name": "Firebird-4.0.5.3140-0.amd64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v4.0.5/Firebird-4.0.5.3140-0.amd64.tar.gz", + "sha256": "6ae43e4fa31ddc99220575023b7d954fb218c063375bb589b16fbe9fcdfdcaa6" + }, + "linux/arm64": { + "name": "Firebird-4.0.5.3140-0.arm64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v4.0.5/Firebird-4.0.5.3140-0.arm64.tar.gz", + "sha256": "83b1f51ee225ccd89990aa078c5a736f4887bfe92806e15f81cc63d1985cf8cc" + } + }, "images": ["bookworm", "jammy"], "imageTags": { "bookworm": ["4"] } }, { - "tag": "v3.0.11", - "name": "Firebird-3.0.11.33703-0.amd64.tar.gz", - "url": "https://github.com/FirebirdSQL/firebird/releases/download/v3.0.11/Firebird-3.0.11.33703-0.amd64.tar.gz", - "os": "linux", - "arch": "amd64", - "sha256": "713757e09b40b2631d800dacd9b80179b7eb75693a72089136055a7154413a3e", + "tag": "v3.0.12", + "platforms": { + "linux/amd64": { + "name": "Firebird-3.0.12.33787-0.amd64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v3.0.12/Firebird-3.0.12.33787-0.amd64.tar.gz", + "sha256": "406a8887ab318a5d8a20781fc1d38a0ca30acdbddbc1558b077646bb2e2e283f" + }, + "linux/arm64": { + "name": "Firebird-3.0.12.33787-0.arm64.tar.gz", + "url": "https://github.com/FirebirdSQL/firebird/releases/download/v3.0.12/Firebird-3.0.12.33787-0.arm64.tar.gz", + "sha256": "e629d03f7e8684716ecb4fade563fa8eb4e4b7c96d48fd2b6dcf081a2d7557c9" + } + }, "images": ["bookworm", "jammy"], "imageTags": { "bookworm": ["3"] diff --git a/firebird-docker.build.ps1 b/firebird-docker.build.ps1 index f04e828..9473dd6 100644 --- a/firebird-docker.build.ps1 +++ b/firebird-docker.build.ps1 @@ -64,29 +64,37 @@ task Prepare { $majorFolder = Join-Path $outputFolder $major New-Item -ItemType Directory $majorFolder -Force > $null - # For each image - $asset.images | ForEach-Object { - $image = $_ - - $TUrl = $asset.url - $TSha256 = $asset.sha256 - $TVersion = $asset.tag.TrimStart('v') - $TMajor = $major - $TImageVersion = "$major-$image" - - $TImageTags = $asset.imageTags.$image - if ($TImageTags) { - # https://stackoverflow.com/a/73073678 - $TImageTags = "'{0}'" -f ($TImageTags -join "', '") - } - - $versionFolder = Join-Path $majorFolder $image - New-Item -ItemType Directory $versionFolder -Force > $null - - Copy-TemplateItem "./src/Dockerfile.$image.template" "$versionFolder/Dockerfile" - Copy-Item './src/entrypoint.sh' $versionFolder - Copy-TemplateItem "./src/image.build.ps1.template" "$versionFolder/image.build.ps1" - Copy-Item './src/image.tests.ps1' $versionFolder + # For each platform + $asset.platforms | Get-Member -MemberType NoteProperty | ForEach-Object { + $platform = $_.Name + $platformData = $asset.platforms.$platform + + # For each image + $asset.images | ForEach-Object { + $image = $_ + + $TUrl = $platformData.url + $TSha256 = $platformData.sha256 + $TVersion = $asset.tag.TrimStart('v') + $TMajor = $major + $TImagePlatform = $platform + $TImageVersion = "$major-$image" + + $TImageTags = $asset.imageTags.$image + if ($TImageTags) { + # https://stackoverflow.com/a/73073678 + $TImageTags = "'{0}'" -f ($TImageTags -join "', '") + } + + $platformFolder = Join-Path $majorFolder $platform + $imageFolder = Join-Path $platformFolder $image + New-Item -ItemType Directory $imageFolder -Force > $null + + Copy-TemplateItem "./src/Dockerfile.$image.template" "$imageFolder/Dockerfile" + Copy-Item './src/entrypoint.sh' $imageFolder + Copy-TemplateItem "./src/image.build.ps1.template" "$imageFolder/image.build.ps1" + Copy-Item './src/image.tests.ps1' $imageFolder + } } } } diff --git a/generated/3/bookworm/Dockerfile b/generated/3/linux/amd64/bookworm/Dockerfile similarity index 90% rename from generated/3/bookworm/Dockerfile rename to generated/3/linux/amd64/bookworm/Dockerfile index 99d7902..a1d1bf2 100644 --- a/generated/3/bookworm/Dockerfile +++ b/generated/3/linux/amd64/bookworm/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM debian:bookworm-slim +FROM --platform=$BUILDPLATFORM debian:bookworm-slim -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v3.0.11/Firebird-3.0.11.33703-0.amd64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=713757e09b40b2631d800dacd9b80179b7eb75693a72089136055a7154413a3e -ENV FIREBIRD_VERSION=3.0.11 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v3.0.12/Firebird-3.0.12.33787-0.amd64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=406a8887ab318a5d8a20781fc1d38a0ca30acdbddbc1558b077646bb2e2e283f +ENV FIREBIRD_VERSION=3.0.12 ENV FIREBIRD_MAJOR=3 # https://linuxcommand.org/lc3_man_pages/seth.html diff --git a/generated/3/jammy/Dockerfile b/generated/3/linux/amd64/jammy/Dockerfile similarity index 89% rename from generated/3/jammy/Dockerfile rename to generated/3/linux/amd64/jammy/Dockerfile index 3b38f87..ccd51d1 100644 --- a/generated/3/jammy/Dockerfile +++ b/generated/3/linux/amd64/jammy/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM ubuntu:jammy +FROM --platform=$BUILDPLATFORM ubuntu:jammy -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v3.0.11/Firebird-3.0.11.33703-0.amd64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=713757e09b40b2631d800dacd9b80179b7eb75693a72089136055a7154413a3e -ENV FIREBIRD_VERSION=3.0.11 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v3.0.12/Firebird-3.0.12.33787-0.amd64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=406a8887ab318a5d8a20781fc1d38a0ca30acdbddbc1558b077646bb2e2e283f +ENV FIREBIRD_VERSION=3.0.12 ENV FIREBIRD_MAJOR=3 # https://linuxcommand.org/lc3_man_pages/seth.html @@ -28,7 +28,8 @@ RUN set -eux; \ libtomcrypt1 \ libtommath1 \ netbase \ - procps; \ + procps \ + tzdata; \ rm -rf /var/lib/apt/lists/* # Fix libtommath for FB 3.0 -- https://github.com/FirebirdSQL/firebird/issues/5716#issuecomment-826239174 diff --git a/generated/4/bookworm/Dockerfile b/generated/4/linux/amd64/bookworm/Dockerfile similarity index 90% rename from generated/4/bookworm/Dockerfile rename to generated/4/linux/amd64/bookworm/Dockerfile index 0317f22..6db01c6 100644 --- a/generated/4/bookworm/Dockerfile +++ b/generated/4/linux/amd64/bookworm/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM debian:bookworm-slim +FROM --platform=$BUILDPLATFORM debian:bookworm-slim -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v4.0.4/Firebird-4.0.4.3010-0.amd64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=ef589301c5e13a1f8481e1e38c453641ef5082344bf69edb51f8aa9f036bcaca -ENV FIREBIRD_VERSION=4.0.4 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v4.0.5/Firebird-4.0.5.3140-0.amd64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=6ae43e4fa31ddc99220575023b7d954fb218c063375bb589b16fbe9fcdfdcaa6 +ENV FIREBIRD_VERSION=4.0.5 ENV FIREBIRD_MAJOR=4 # https://linuxcommand.org/lc3_man_pages/seth.html diff --git a/generated/4/jammy/Dockerfile b/generated/4/linux/amd64/jammy/Dockerfile similarity index 89% rename from generated/4/jammy/Dockerfile rename to generated/4/linux/amd64/jammy/Dockerfile index 55f519b..2ed947d 100644 --- a/generated/4/jammy/Dockerfile +++ b/generated/4/linux/amd64/jammy/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM ubuntu:jammy +FROM --platform=$BUILDPLATFORM ubuntu:jammy -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v4.0.4/Firebird-4.0.4.3010-0.amd64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=ef589301c5e13a1f8481e1e38c453641ef5082344bf69edb51f8aa9f036bcaca -ENV FIREBIRD_VERSION=4.0.4 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v4.0.5/Firebird-4.0.5.3140-0.amd64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=6ae43e4fa31ddc99220575023b7d954fb218c063375bb589b16fbe9fcdfdcaa6 +ENV FIREBIRD_VERSION=4.0.5 ENV FIREBIRD_MAJOR=4 # https://linuxcommand.org/lc3_man_pages/seth.html @@ -28,7 +28,8 @@ RUN set -eux; \ libtomcrypt1 \ libtommath1 \ netbase \ - procps; \ + procps \ + tzdata; \ rm -rf /var/lib/apt/lists/* # Fix libtommath for FB 3.0 -- https://github.com/FirebirdSQL/firebird/issues/5716#issuecomment-826239174 diff --git a/generated/5/bookworm/Dockerfile b/generated/5/linux/amd64/bookworm/Dockerfile similarity index 90% rename from generated/5/bookworm/Dockerfile rename to generated/5/linux/amd64/bookworm/Dockerfile index 9439d00..305e206 100644 --- a/generated/5/bookworm/Dockerfile +++ b/generated/5/linux/amd64/bookworm/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM debian:bookworm-slim +FROM --platform=$BUILDPLATFORM debian:bookworm-slim -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.0/Firebird-5.0.0.1306-0-linux-x64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=137b356ea464e224b6ed1241e6dba95b6b950ff1feef91696d4071d4da880768 -ENV FIREBIRD_VERSION=5.0.0 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-x64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=e1023b005e5d6db8f717af032e91f0f94aa7a8dbe0e78f250931214ca0a21e57 +ENV FIREBIRD_VERSION=5.0.1 ENV FIREBIRD_MAJOR=5 # https://linuxcommand.org/lc3_man_pages/seth.html diff --git a/generated/5/linux/amd64/jammy/Dockerfile b/generated/5/linux/amd64/jammy/Dockerfile new file mode 100644 index 0000000..e35d110 --- /dev/null +++ b/generated/5/linux/amd64/jammy/Dockerfile @@ -0,0 +1,82 @@ +# +# This file was generated. Do not edit. See /src. +# + +# Best practices for Dockerfile instructions +# https://docs.docker.com/develop/develop-images/instructions/ + +FROM --platform=$BUILDPLATFORM ubuntu:jammy + +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-x64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=e1023b005e5d6db8f717af032e91f0f94aa7a8dbe0e78f250931214ca0a21e57 +ENV FIREBIRD_VERSION=5.0.1 +ENV FIREBIRD_MAJOR=5 + +# https://linuxcommand.org/lc3_man_pages/seth.html +# -e Exit immediately if a command exits with a non-zero status. +# -u Treat unset variables as an error when substituting +# -x Print commands and their arguments as they are executed. + +# Prerequisites +# FB 3.0 uses libncurses5: https://github.com/FirebirdSQL/firebird/issues/6418#issuecomment-826245785 +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libatomic1 \ + libicu70 \ + $([ $FIREBIRD_MAJOR -eq 3 ] && echo 'libncurses5' || echo 'libncurses6') \ + libtomcrypt1 \ + libtommath1 \ + netbase \ + procps \ + tzdata; \ + rm -rf /var/lib/apt/lists/* + +# Fix libtommath for FB 3.0 -- https://github.com/FirebirdSQL/firebird/issues/5716#issuecomment-826239174 +RUN [ $FIREBIRD_MAJOR -eq 3 ] && ln -sf /usr/lib/x86_64-linux-gnu/libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 || true + +# Download +ADD --checksum="sha256:$FIREBIRD_RELEASE_SHA256" \ + --chown=root:root \ + --chmod=777 \ + $FIREBIRD_RELEASE_URL \ + /tmp/firebird-bundle.tar.gz + +# Extract, install, clean +RUN set -eux; \ + cd /tmp; \ + tar --extract --file=firebird-bundle.tar.gz --gunzip --verbose --strip-components=1; \ + ./install.sh -silent; \ + rm *.tar.gz *.sh *.txt \ + # Remove unnecessary files + rm -rf /opt/firebird/doc \ + /opt/firebird/examples \ + /opt/firebird/help \ + /opt/firebird/include; \ + # Remove 'employee' sample database from 'databases.conf' + sed -i '/^employee/d' /opt/firebird/databases.conf + +# System path +ENV PATH=/opt/firebird/bin:$PATH + +# Data directory +ENV FIREBIRD_DATA /run/firebird/data +RUN set -eux; \ + mkdir -p "$FIREBIRD_DATA"; \ + chown -R firebird:firebird "$FIREBIRD_DATA"; \ + chmod 644 "$FIREBIRD_DATA" +VOLUME $FIREBIRD_DATA + +# Entrypoint +COPY entrypoint.sh /usr/local/bin/ +RUN set -eux; \ + chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 3050/tcp + +# Fix terminfo location +ENV TERMINFO=/lib/terminfo/ + +CMD ["firebird"] + diff --git a/generated/5/jammy/Dockerfile b/generated/5/linux/arm64/bookworm/Dockerfile similarity index 89% rename from generated/5/jammy/Dockerfile rename to generated/5/linux/arm64/bookworm/Dockerfile index 28bc152..448cf90 100644 --- a/generated/5/jammy/Dockerfile +++ b/generated/5/linux/arm64/bookworm/Dockerfile @@ -5,11 +5,11 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM ubuntu:jammy +FROM --platform=$BUILDPLATFORM debian:bookworm-slim -ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.0/Firebird-5.0.0.1306-0-linux-x64.tar.gz -ENV FIREBIRD_RELEASE_SHA256=137b356ea464e224b6ed1241e6dba95b6b950ff1feef91696d4071d4da880768 -ENV FIREBIRD_VERSION=5.0.0 +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-arm64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=46b3f4f170458a93365c67118c062ba8509903fe8293bf8a62e7bd8a388e2d06 +ENV FIREBIRD_VERSION=5.0.1 ENV FIREBIRD_MAJOR=5 # https://linuxcommand.org/lc3_man_pages/seth.html @@ -23,7 +23,7 @@ RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ libatomic1 \ - libicu70 \ + libicu72 \ $([ $FIREBIRD_MAJOR -eq 3 ] && echo 'libncurses5' || echo 'libncurses6') \ libtomcrypt1 \ libtommath1 \ diff --git a/generated/5/linux/arm64/jammy/Dockerfile b/generated/5/linux/arm64/jammy/Dockerfile new file mode 100644 index 0000000..4000f8b --- /dev/null +++ b/generated/5/linux/arm64/jammy/Dockerfile @@ -0,0 +1,82 @@ +# +# This file was generated. Do not edit. See /src. +# + +# Best practices for Dockerfile instructions +# https://docs.docker.com/develop/develop-images/instructions/ + +FROM --platform=$BUILDPLATFORM ubuntu:jammy + +ENV FIREBIRD_RELEASE_URL=https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-linux-arm64.tar.gz +ENV FIREBIRD_RELEASE_SHA256=46b3f4f170458a93365c67118c062ba8509903fe8293bf8a62e7bd8a388e2d06 +ENV FIREBIRD_VERSION=5.0.1 +ENV FIREBIRD_MAJOR=5 + +# https://linuxcommand.org/lc3_man_pages/seth.html +# -e Exit immediately if a command exits with a non-zero status. +# -u Treat unset variables as an error when substituting +# -x Print commands and their arguments as they are executed. + +# Prerequisites +# FB 3.0 uses libncurses5: https://github.com/FirebirdSQL/firebird/issues/6418#issuecomment-826245785 +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libatomic1 \ + libicu70 \ + $([ $FIREBIRD_MAJOR -eq 3 ] && echo 'libncurses5' || echo 'libncurses6') \ + libtomcrypt1 \ + libtommath1 \ + netbase \ + procps \ + tzdata; \ + rm -rf /var/lib/apt/lists/* + +# Fix libtommath for FB 3.0 -- https://github.com/FirebirdSQL/firebird/issues/5716#issuecomment-826239174 +RUN [ $FIREBIRD_MAJOR -eq 3 ] && ln -sf /usr/lib/x86_64-linux-gnu/libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 || true + +# Download +ADD --checksum="sha256:$FIREBIRD_RELEASE_SHA256" \ + --chown=root:root \ + --chmod=777 \ + $FIREBIRD_RELEASE_URL \ + /tmp/firebird-bundle.tar.gz + +# Extract, install, clean +RUN set -eux; \ + cd /tmp; \ + tar --extract --file=firebird-bundle.tar.gz --gunzip --verbose --strip-components=1; \ + ./install.sh -silent; \ + rm *.tar.gz *.sh *.txt \ + # Remove unnecessary files + rm -rf /opt/firebird/doc \ + /opt/firebird/examples \ + /opt/firebird/help \ + /opt/firebird/include; \ + # Remove 'employee' sample database from 'databases.conf' + sed -i '/^employee/d' /opt/firebird/databases.conf + +# System path +ENV PATH=/opt/firebird/bin:$PATH + +# Data directory +ENV FIREBIRD_DATA /run/firebird/data +RUN set -eux; \ + mkdir -p "$FIREBIRD_DATA"; \ + chown -R firebird:firebird "$FIREBIRD_DATA"; \ + chmod 644 "$FIREBIRD_DATA" +VOLUME $FIREBIRD_DATA + +# Entrypoint +COPY entrypoint.sh /usr/local/bin/ +RUN set -eux; \ + chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 3050/tcp + +# Fix terminfo location +ENV TERMINFO=/lib/terminfo/ + +CMD ["firebird"] + diff --git a/src/Dockerfile.bookworm.template b/src/Dockerfile.bookworm.template index e1b86f3..f19b4fb 100644 --- a/src/Dockerfile.bookworm.template +++ b/src/Dockerfile.bookworm.template @@ -1,7 +1,7 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM debian:bookworm-slim +FROM --platform=$BUILDPLATFORM debian:bookworm-slim ENV FIREBIRD_RELEASE_URL=<%$TUrl%> ENV FIREBIRD_RELEASE_SHA256=<%$TSha256%> diff --git a/src/Dockerfile.jammy.template b/src/Dockerfile.jammy.template index 51e571e..f97dbbe 100644 --- a/src/Dockerfile.jammy.template +++ b/src/Dockerfile.jammy.template @@ -1,7 +1,7 @@ # Best practices for Dockerfile instructions # https://docs.docker.com/develop/develop-images/instructions/ -FROM ubuntu:jammy +FROM --platform=$BUILDPLATFORM ubuntu:jammy ENV FIREBIRD_RELEASE_URL=<%$TUrl%> ENV FIREBIRD_RELEASE_SHA256=<%$TSha256%> diff --git a/src/image.build.ps1.template b/src/image.build.ps1.template index 373af46..c47abcb 100644 --- a/src/image.build.ps1.template +++ b/src/image.build.ps1.template @@ -6,6 +6,7 @@ param( task Build { $script:BUILDER_IMAGE_PREFIX = 'ghcr.io/fdcastel' $script:BUILDER_IMAGE_NAME = 'firebird' + $script:BUILDER_IMAGE_PLATFORM = '<%$TImagePlatform%>' $script:BUILDER_IMAGE_VERSION = '<%$TImageVersion%>' $script:BUILDER_IMAGE_TAGS = @(<%$TImageTags%>) @@ -15,9 +16,11 @@ task Build { $tags = $BUILDER_IMAGE_TAGS + $BUILDER_IMAGE_VERSION | ForEach-Object { '--tag', "$BUILDER_IMAGE_PREFIX/${BUILDER_IMAGE_NAME}:$_" } $allParameters = @( - 'build'; - $tags; - $noCacheParameter, + 'build'; + '--platform'; + "$BUILDER_IMAGE_PLATFORM"; + $tags; + $noCacheParameter, '--label', 'org.opencontainers.image.description=Firebird Database', '--label', 'org.opencontainers.image.source=https://github.com/fdcastel/firebird-docker', '--label', 'org.opencontainers.image.version=<%$TImageVersion%>',