From ddff2599cf0a1398251a9214ed61c75f70fd0ccb Mon Sep 17 00:00:00 2001 From: Merith-TK Date: Sun, 6 Jul 2025 17:24:09 +0100 Subject: [PATCH] restore build scripts.. --- .forgejo/workflows/build-on-commit.yml | 47 ++++++++++++++++++++++++++ .forgejo/workflows/build-on-tag.yml | 46 +++++++++++++++++++++++++ Dockerfile.db | 38 +++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 .forgejo/workflows/build-on-commit.yml create mode 100644 .forgejo/workflows/build-on-tag.yml create mode 100644 Dockerfile.db diff --git a/.forgejo/workflows/build-on-commit.yml b/.forgejo/workflows/build-on-commit.yml new file mode 100644 index 0000000..fba6d8f --- /dev/null +++ b/.forgejo/workflows/build-on-commit.yml @@ -0,0 +1,47 @@ +name: Build Docker Image on Commit + +on: + push: + branches: + - main + tags: + - '!' # Exclude tags + +jobs: + build-and-publish: + runs-on: docker-builder + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set REPO_VARS + id: repo-url + run: | + echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV + echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + driver-opts: | + network=host + + - name: Login to OCI registry + run: | + echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin + + - name: Build and push multi-arch Docker images + run: | + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag $REPO_HOST/$REPO_PATH:${{ github.sha }} \ + --tag $REPO_HOST/$REPO_PATH:nightly \ + --push \ + . + + - name: Cleanup + run: | + docker buildx prune -f + docker logout $REPO_HOST \ No newline at end of file diff --git a/.forgejo/workflows/build-on-tag.yml b/.forgejo/workflows/build-on-tag.yml new file mode 100644 index 0000000..012b946 --- /dev/null +++ b/.forgejo/workflows/build-on-tag.yml @@ -0,0 +1,46 @@ +name: Build and Publish Docker Image on Tag + +on: + push: + tags: + - '*' + +jobs: + build-and-publish: + runs-on: docker-builder + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set REPO_VARS + id: repo-url + run: | + echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV + echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV + echo "TAG=${{ github.ref_name }}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + driver-opts: | + network=host + + - name: Login to OCI registry + run: | + echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin + + - name: Build and push Docker images + run: | + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag $REPO_HOST/$REPO_PATH:$TAG \ + --tag $REPO_HOST/$REPO_PATH:latest \ + --push \ + . + + - name: Cleanup + run: | + docker buildx prune -f + docker logout $REPO_HOST \ No newline at end of file diff --git a/Dockerfile.db b/Dockerfile.db new file mode 100644 index 0000000..c35b342 --- /dev/null +++ b/Dockerfile.db @@ -0,0 +1,38 @@ +FROM postgres:16.6 + +# Metadata +LABEL maintainer="TAK Server Docker Setup" +LABEL description="PostgreSQL with PostGIS for TAK Server" +LABEL version="1.0" + +# Install required packages +RUN apt-get update && apt-get install -y \ + postgresql-16-postgis-3 \ + openjdk-17-jdk \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Create necessary directories +RUN mkdir -p /opt/tak/db-utils \ + && mkdir -p /opt/tak/logs + +# Copy database utilities and configuration +COPY data/takserver/db-utils/ /opt/tak/db-utils/ +COPY config/postgres/ /docker-entrypoint-initdb.d/ + +# Set proper permissions +RUN chmod +x /opt/tak/db-utils/*.sh \ + && chmod +x /docker-entrypoint-initdb.d/*.sh + +# Set environment variables with defaults (passwords should be set at runtime) +ENV POSTGRES_DB=cot \ + POSTGRES_USER=martiuser + +# Note: POSTGRES_PASSWORD should be set at runtime via docker-compose or container environment +# Note: Authentication method should be configured via PostgreSQL configuration files + +# Expose PostgreSQL port +EXPOSE 5432 + +# Custom entrypoint that initializes TAK database +ENTRYPOINT ["/opt/tak/db-utils/configureInDocker.sh"]