Compare commits

...

40 Commits

Author SHA1 Message Date
charlesgauthereau 92d64c0b4b chore(release): 1.0.4 2026-01-28 23:31:34 +01:00
Charles GTE abd39e2db1 Merge pull request #8 from Portabase/fix/docker-image
Fix/docker image
2026-01-28 23:31:10 +01:00
charlesgauthereau 48a4ef6cc2 fix: Dockerfile 2026-01-28 23:30:37 +01:00
charlesgauthereau 358bffd675 chore(release): 1.0.4-rc.20 2026-01-28 23:21:30 +01:00
charlesgauthereau 25e08a2b94 chore(release): 1.0.4-rc.19 2026-01-28 23:12:20 +01:00
charlesgauthereau dc563d3cfd chore(release): 1.0.4-rc.18 2026-01-28 23:01:22 +01:00
charlesgauthereau 92ad1cbfb4 chore(release): 1.0.4-rc.17 2026-01-28 22:59:35 +01:00
charlesgauthereau 82d5306dd4 chore(release): 1.0.4-rc.16 2026-01-28 22:46:27 +01:00
charlesgauthereau 52714cda21 chore(release): 1.0.4-rc.15 2026-01-28 22:25:53 +01:00
charlesgauthereau fa46d1bbc4 chore(release): 1.0.4-rc.14 2026-01-28 22:15:26 +01:00
charlesgauthereau 5535b4b22f chore(release): 1.0.4-rc.13 2026-01-28 22:02:31 +01:00
charlesgauthereau 0e86a813b5 chore(release): 1.0.4-rc.12 2026-01-28 22:00:27 +01:00
charlesgauthereau ecdb4a067d chore(release): 1.0.4-rc.11 2026-01-28 21:48:08 +01:00
charlesgauthereau 8078d733e4 chore(release): 1.0.4-rc.10 2026-01-28 21:40:05 +01:00
charlesgauthereau 06c4a05cbe chore(release): 1.0.4-rc.9 2026-01-28 21:38:58 +01:00
charlesgauthereau 6985260a8e chore(release): 1.0.4-rc.8 2026-01-28 21:24:24 +01:00
charlesgauthereau 313693f50b chore(release): 1.0.4-rc.7 2026-01-28 21:20:53 +01:00
charlesgauthereau 2e7ccb7897 chore(release): 1.0.4-rc.6 2026-01-28 21:12:45 +01:00
charlesgauthereau 11cba862ab chore(release): 1.0.4-rc.5 2026-01-28 21:03:56 +01:00
charlesgauthereau 7b40ce6d83 chore(release): 1.0.4-rc.4 2026-01-28 20:49:05 +01:00
charlesgauthereau e6b0653e48 chore(release): 1.0.4-rc.3 2026-01-28 20:42:54 +01:00
charlesgauthereau a215c95b5e chore(release): 1.0.4-rc.2 2026-01-28 20:38:22 +01:00
charlesgauthereau 6fb3b8bb37 chore(release): 1.0.4-rc.1 2026-01-28 19:47:21 +01:00
charlesgauthereau aedb6a0ebc fix: Dockerfile 2026-01-28 19:46:14 +01:00
charlesgauthereau 97c770becf fix: Dockerfile 2026-01-28 17:21:30 +01:00
charlesgauthereau 73279f5b76 chore(release): 1.0.3 2026-01-28 17:21:17 +01:00
Charles GTE 8f7b0523a4 Merge pull request #7 from Portabase/fix/pipeline
fix/pipeline
2026-01-28 17:19:33 +01:00
charlesgauthereau 321d9a5ca9 fix: Dockerfile 2026-01-28 17:18:56 +01:00
charlesgauthereau a23571bcb2 chore(release): 1.0.3-rc.16 2026-01-28 17:11:23 +01:00
charlesgauthereau ab22b44c18 chore(release): 1.0.3-rc.15 2026-01-28 16:08:59 +01:00
charlesgauthereau fcac5bd0da chore(release): 1.0.3-rc.14 2026-01-28 16:05:46 +01:00
charlesgauthereau 2b8628899d fix: Dockerfile 2026-01-28 16:05:45 +01:00
charlesgauthereau 2e11ba2fd4 chore(release): 1.0.3-rc.13 2026-01-28 15:51:35 +01:00
charlesgauthereau 7d424a78f1 chore(release): 1.0.3-rc.12 2026-01-28 15:30:38 +01:00
charlesgauthereau 6089e19412 fix: Dockerfile 2026-01-28 15:30:21 +01:00
charlesgauthereau 952c70de61 chore(release): 1.0.3-rc.11 2026-01-28 15:19:47 +01:00
charlesgauthereau 99c42206c1 chore(release): 1.0.3-rc.10 2026-01-28 14:53:04 +01:00
charlesgauthereau 09b1869833 fix: assets 2026-01-28 14:53:01 +01:00
Charles GTE b2f8d56efb Merge pull request #5 from Portabase/fix/mongodb-production-docker
fix: mongo docker configuration.
2026-01-28 14:51:56 +01:00
charlesgauthereau ddffae0d23 chore(release): 1.0.3-rc.9 2026-01-28 14:51:22 +01:00
23 changed files with 112 additions and 99 deletions
+68 -52
View File
@@ -26,76 +26,92 @@ on:
required: true
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
build:
name: Build and push Docker images
runs-on: ${{ matrix.platform == 'linux/amd64' && 'ubuntu-latest' || matrix.platform == 'linux/arm64' && 'ubuntu-24.04-arm' }}
strategy:
fail-fast: false
matrix:
platform: [linux/amd64, linux/arm64]
steps:
- name: Check out the repo
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up QEMU (multi-arch support)
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true
- name: Log in to Docker Hub
uses: docker/login-action@v2
- name: Login to Docker
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set tags
- name: Set image tag
id: set-tags
run: |
REF_NAME=${GITHUB_REF#refs/tags/}
TAGS="${{ inputs.image_name }}:$REF_NAME"
if [[ "${{ inputs.add_latest }}" == "true" ]]; then
TAGS="$TAGS,${{ inputs.image_name }}:latest"
if [ "${{ matrix.platform }}" = "linux/amd64" ]; then
IMAGE="${{ inputs.image_name }}:$REF_NAME-amd64"
else
IMAGE="${{ inputs.image_name }}:$REF_NAME-arm64"
fi
echo "tags=$TAGS" >> $GITHUB_OUTPUT
echo "image=$IMAGE" >> $GITHUB_OUTPUT
- name: Build amd64 image
- name: Build and push image
uses: docker/build-push-action@v6
with:
context: .
file: ${{ inputs.dockerfile }}
platforms: linux/amd64
platforms: ${{ matrix.platform }}
push: true
tags: ${{ inputs.image_name }}:amd64
tags: ${{ steps.set-tags.outputs.image }}
target: ${{ inputs.target }}
cache-from: type=registry,ref=${{ inputs.image_name }}:buildcache-amd64
cache-to: type=registry,ref=${{ inputs.image_name }}:buildcache-amd64,mode=max
- name: Build arm64 image
uses: docker/build-push-action@v6
with:
context: .
file: ${{ inputs.dockerfile }}
platforms: linux/arm64
push: true
tags: ${{ inputs.image_name }}:arm64
target: ${{ inputs.target }}
cache-from: type=registry,ref=${{ inputs.image_name }}:buildcache-arm64
cache-to: type=registry,ref=${{ inputs.image_name }}:buildcache-arm64,mode=max
- name: Create and push multi-arch manifest
- name: Prepare artifact name
id: artifact
run: |
platform=${{ matrix.platform }}
echo "safe_platform=${platform//\//-}" >> $GITHUB_OUTPUT
echo "${{ steps.set-tags.outputs.image }}" > image.txt
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: image-${{ steps.artifact.outputs.safe_platform }}
path: image.txt
if-no-files-found: warn
compression-level: 6
overwrite: false
include-hidden-files: false
create-manifest:
name: Create multi-arch Docker manifest
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
name: image-linux-amd64
path: /tmp/digests/amd64
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
name: image-linux-arm64
path: /tmp/digests/arm64
- name: Login to Docker
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Create and push manifest list
working-directory: /tmp/digests
run: |
DOCKER_IMAGES="$(cat amd64/image.txt) $(cat arm64/image.txt)"
REF_NAME=${GITHUB_REF#refs/tags/}
docker manifest create ${{ inputs.image_name }}:$REF_NAME \
--amend ${{ inputs.image_name }}:amd64 \
--amend ${{ inputs.image_name }}:arm64
docker manifest push ${{ inputs.image_name }}:$REF_NAME
if [[ "${{ inputs.add_latest }}" == "true" ]]; then
docker manifest create ${{ inputs.image_name }}:latest \
--amend ${{ inputs.image_name }}:amd64 \
--amend ${{ inputs.image_name }}:arm64
docker manifest push ${{ inputs.image_name }}:latest
fi
MANIFEST_IMAGE="${{ inputs.image_name }}:$REF_NAME"
docker buildx imagetools create $DOCKER_IMAGES -t $MANIFEST_IMAGE
docker buildx imagetools inspect $MANIFEST_IMAGE
if [ "${{ inputs.add_latest }}" = "true" ]; then
docker buildx imagetools create $DOCKER_IMAGES -t ${{ inputs.image_name }}:latest
docker buildx imagetools inspect ${{ inputs.image_name }}:latest
fi
+1 -1
View File
@@ -22,5 +22,5 @@ keywords:
- self-hosted
- portabase
license: Apache-2.0
version: 1.0.3-rc.8
version: 1.0.4
date-released: "2026-01-28"
Generated
+1 -1
View File
@@ -1595,7 +1595,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "portabase-agent"
version = "1.0.3-rc.7"
version = "1.0.4-rc.20"
dependencies = [
"anyhow",
"async-trait",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "portabase-agent"
version = "1.0.3-rc.8"
version = "1.0.4"
edition = "2024"
[dependencies]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -5
View File
@@ -1,10 +1,11 @@
services:
rust-app:
# build:
# context: .
# dockerfile: docker/Dockerfile
# target: prod
image: portabase/agent:latest
build:
context: .
dockerfile: docker/Dockerfile
target: prod
# image: portabase/agent:latest
platform: linux/arm64
container_name: rust-prod
volumes:
- ./databases.json:/config/config.json
+1 -2
View File
@@ -4,7 +4,6 @@ services:
context: .
dockerfile: docker/Dockerfile
target: dev
platform: linux/arm64
container_name: rust-dev
volumes:
- .:/app
@@ -17,7 +16,7 @@ services:
APP_ENV: development
LOG: debug
TZ: "Europe/Paris"
EDGE_KEY: "eyJzZXJ2ZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODciLCJhZ2VudElkIjoiNmExMzc0M2ItYjMwZS00Zjg4LWJjY2EtMmMwZjE2NWVjYjQxIiwicHVibGljS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tXG5NSUlCQ2dLQ0FRRUE5TWV4M2pmdnVLdFB5YU1ERnh2Ulp2dmd3YkRJQ2JzQi81Wll5NDNSVVRBaXZRYjJiSDdYXG5qRHBQd1lJeCs4UFBrbHlRbDVMQzV1UWZEaCs4SVd4OG1LZ3FvMXpWMkdiZXdGbEdEWFYxVEdyU1ZEU25aSWR4XG52bWdYc29EeXhVMlJvWUFUMS9YMWxuc2YxenZKdkFMTkhXdEhRdk42SjVDZTFSMmFsendVRGFEVXlJNzRmSldQXG5tNTh0SDMrYklXL0VVTXdjaWNxM0oySWw3Vm9KNkZNUHJQL1ZSOWEvdFF1SU1qa200MXpFY2NscExPa2luRkxuXG54NmVUWkFSZUpya2UrbnRvZ2t4TGEyRWV5a1lUNzB4V3hKNWp5ZExBVnRvNkkyQlVLVVJoTkowTUFaU29NYUtvXG5iMGJRcnY1UzExZWllMnMrT2I3aTYzSFpkVUx0UmV1MVJ3SURBUUFCXG4tLS0tLUVORCBSU0EgUFVCTElDIEtFWS0tLS0tXG4ifQ"
EDGE_KEY: "eyJzZXJ2ZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODciLCJhZ2VudElkIjoiOGZmMDE4NTQtYjJhMS00ZTE0LTkwMjctZTJiOWIxZjQ1YzdlIiwicHVibGljS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tXG5NSUlCQ2dLQ0FRRUE5TWV4M2pmdnVLdFB5YU1ERnh2Ulp2dmd3YkRJQ2JzQi81Wll5NDNSVVRBaXZRYjJiSDdYXG5qRHBQd1lJeCs4UFBrbHlRbDVMQzV1UWZEaCs4SVd4OG1LZ3FvMXpWMkdiZXdGbEdEWFYxVEdyU1ZEU25aSWR4XG52bWdYc29EeXhVMlJvWUFUMS9YMWxuc2YxenZKdkFMTkhXdEhRdk42SjVDZTFSMmFsendVRGFEVXlJNzRmSldQXG5tNTh0SDMrYklXL0VVTXdjaWNxM0oySWw3Vm9KNkZNUHJQL1ZSOWEvdFF1SU1qa200MXpFY2NscExPa2luRkxuXG54NmVUWkFSZUpya2UrbnRvZ2t4TGEyRWV5a1lUNzB4V3hKNWp5ZExBVnRvNkkyQlVLVVJoTkowTUFaU29NYUtvXG5iMGJRcnY1UzExZWllMnMrT2I3aTYzSFpkVUx0UmV1MVJ3SURBUUFCXG4tLS0tLUVORCBSU0EgUFVCTElDIEtFWS0tLS0tXG4ifQ"
#POOLING: 1
#DATABASES_CONFIG_FILE: "config.toml"
extra_hosts:
+34 -37
View File
@@ -1,9 +1,7 @@
# =========================
# Base Rust image
# Base image (shared)
# =========================
FROM rust:1.92 AS base
ARG TARGETARCH
FROM rust:1.92.0 AS base
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
pkg-config \
@@ -17,66 +15,64 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
zlib1g \
curl \
mariadb-client \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# =========================
# PostgreSQL client binaries (only target arch)
# =========================
RUN for v in 12 13 14 15 16 17 18; do mkdir -p /usr/lib/postgresql/$v/bin; done
COPY assets/tools/$TARGETARCH/postgresql/ /tmp/pg/
RUN for v in 12 13 14 15 16 17 18; do \
cp -r /tmp/pg/postgresql-$v/bin/* /usr/lib/postgresql/$v/bin/; \
done && rm -rf /tmp/pg && chmod +x /usr/lib/postgresql/*/bin/*
ARG TARGETARCH
# =========================
# MongoDB client binaries (only target arch)
# PostgreSQL client binaries (versions 12-18)
# =========================
RUN for v in 12 13 14 15 16 17 18; do \
mkdir -p /usr/lib/postgresql/$v/bin; \
done
COPY assets/tools/amd64/postgresql/ /tmp/pg-x64/
COPY assets/tools/arm64/postgresql/ /tmp/pg-arm/
RUN if [ "$TARGETARCH" = "amd64" ]; then \
wget -q https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian12-x86_64-100.10.0.deb -O /tmp/mongodb-tools.deb; \
for v in 12 13 14 15 16 17 18; do \
cp -r /tmp/pg-x64/postgresql-$v/bin/* /usr/lib/postgresql/$v/bin/; \
done; \
elif [ "$TARGETARCH" = "arm64" ]; then \
wget -q https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-arm64-100.10.0.deb -O /tmp/mongodb-tools.deb; \
fi && dpkg -i /tmp/mongodb-tools.deb || apt-get install -f -y --no-install-recommends && \
rm -f /tmp/mongodb-tools.deb && \
mkdir -p /usr/local/mongodb/bin && \
ln -sf /usr/bin/mongodump /usr/local/mongodb/bin/mongodump || true && \
ln -sf /usr/bin/mongorestore /usr/local/mongodb/bin/mongorestore || true
for v in 12 13 14 15 16 17 18; do \
cp -r /tmp/pg-arm/postgresql-$v/bin/* /usr/lib/postgresql/$v/bin/; \
done; \
fi && \
rm -rf /tmp/pg-x64 /tmp/pg-arm && \
chmod +x /usr/lib/postgresql/*/bin/*
# =========================
# MongoDB client binaries
# =========================
COPY assets/tools/${TARGETARCH}/mongodb/ /usr/local/mongodb/
RUN chmod +x /usr/local/mongodb/bin/*
WORKDIR /app
# =========================
# Development stage
# Development image
# =========================
FROM base AS dev
RUN cargo install cargo-watch
# Pre-cache dependencies
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && echo "fn main() {}" > src/main.rs
RUN cargo build
RUN rm -rf src
COPY . .
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
CMD ["/entrypoint.sh"]
# =========================
# Builder stage for production
# Builder (production)
# =========================
FROM base AS builder
WORKDIR /app
RUN cargo install cargo-chef
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && echo "fn main() {}" > src/main.rs
RUN cargo chef prepare --recipe-path recipe.json
RUN cargo chef cook --recipe-path recipe.json --release
RUN rm -rf src
COPY . .
RUN cargo build --release
@@ -84,7 +80,7 @@ RUN cargo build --release
RUN echo "APP_VERSION=$(cargo pkgid | awk -F# '{print $2}')" > /app/version.env
# =========================
# Production runtime
# Runtime (production)
# =========================
FROM ubuntu:24.04 AS prod
@@ -99,16 +95,17 @@ RUN apt-get update && apt-get install -y \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=builder /app/target/release/app /usr/local/bin/app
COPY --from=builder /app/version.env /app/version.env
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
COPY --from=base /usr/lib/postgresql/ /usr/lib/postgresql/
COPY --from=base /usr/local/mongodb/bin /usr/local/mongodb/bin
COPY --from=base /usr/local/mongodb/bin/ /usr/local/mongodb/bin/
ENV APP_ENV=production