-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
397 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,17 +16,34 @@ jobs: | |
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }} | ||
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }} | ||
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }} | ||
build_base: ${{ steps.changed_files.outputs.base_any_changed }} | ||
full_base: ${{ steps.changed_files.outputs.full_base_any_changed }} | ||
slim_base: ${{ steps.changed_files.outputs.slim_base_any_changed }} | ||
image_tag: ${{ steps.set_env_variables.outputs.IMAGE_TAG }} | ||
|
||
steps: | ||
- id: set_env_variables | ||
name: Set Environment Variables | ||
run: | | ||
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT | ||
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT | ||
if [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT | ||
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT | ||
echo "IMAGE_TAG=latest" >> $GITHUB_OUTPUT | ||
else | ||
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT | ||
if [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then | ||
echo "TARGET_BRANCH=preview" >> $GITHUB_OUTPUT | ||
else | ||
echo "IMAGE_TAG=develop" >> $GITHUB_OUTPUT | ||
fi | ||
fi | ||
- id: checkout_files | ||
name: Checkout Files | ||
|
@@ -37,15 +54,19 @@ jobs: | |
uses: tj-actions/changed-files@v42 | ||
with: | ||
files_yaml: | | ||
base: | ||
- aio/Dockerfile.base | ||
full_base: | ||
- aio/Dockerfile-full-base | ||
- aio/supervisord-full-base | ||
slim_base: | ||
- aio/Dockerfile-slim-base | ||
- aio/supervisord-slim-base | ||
base_build_push: | ||
if: ${{ needs.base_build_setup.outputs.build_base == 'true' || github.event_name == 'workflow_dispatch' || needs.base_build_setup.outputs.gh_branch_name == 'master' }} | ||
full_base_build_push: | ||
if: ${{ needs.base_build_setup.outputs.full_base == 'true' || needs.base_build_setup.outputs.gh_branch_name == 'master' }} | ||
runs-on: ubuntu-latest | ||
needs: [base_build_setup] | ||
env: | ||
BASE_IMG_TAG: makeplane/plane-aio-base:${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BASE_IMG_TAG: makeplane/plane-aio-full-base:${{ needs.base_build_setup.outputs.image_tag }} | ||
TARGET_BRANCH: ${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }} | ||
|
@@ -55,14 +76,46 @@ jobs: | |
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set Docker Tag | ||
run: | | ||
if [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
TAG=makeplane/plane-aio-base:latest | ||
else | ||
TAG=${{ env.BASE_IMG_TAG }} | ||
fi | ||
echo "BASE_IMG_TAG=${TAG}" >> $GITHUB_ENV | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
driver: ${{ env.BUILDX_DRIVER }} | ||
version: ${{ env.BUILDX_VERSION }} | ||
endpoint: ${{ env.BUILDX_ENDPOINT }} | ||
|
||
- name: Build and Push to Docker Hub | ||
uses: docker/[email protected] | ||
with: | ||
context: ./aio | ||
file: ./aio/Dockerfile-full-base | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.BASE_IMG_TAG }} | ||
push: true | ||
env: | ||
DOCKER_BUILDKIT: 1 | ||
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
slim_base_build_push: | ||
if: ${{ needs.base_build_setup.outputs.slim_base == 'true' || needs.base_build_setup.outputs.gh_branch_name == 'master' }} | ||
runs-on: ubuntu-latest | ||
needs: [base_build_setup] | ||
env: | ||
BASE_IMG_TAG: makeplane/plane-aio-slim-base:${{ needs.base_build_setup.outputs.image_tag }} | ||
TARGET_BRANCH: ${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }} | ||
BUILDX_PLATFORMS: ${{ needs.base_build_setup.outputs.gh_buildx_platforms }} | ||
BUILDX_ENDPOINT: ${{ needs.base_build_setup.outputs.gh_buildx_endpoint }} | ||
steps: | ||
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
|
@@ -81,7 +134,7 @@ jobs: | |
uses: docker/[email protected] | ||
with: | ||
context: ./aio | ||
file: ./aio/Dockerfile.base | ||
file: ./aio/Dockerfile-slim-base | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.BASE_IMG_TAG }} | ||
push: true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
# ***************************************************************************** | ||
# STAGE 1: Build the project | ||
# ***************************************************************************** | ||
FROM node:18-alpine AS builder | ||
RUN apk add --no-cache libc6-compat | ||
# Set working directory | ||
WORKDIR /app | ||
ENV NEXT_PUBLIC_API_BASE_URL=http://NEXT_PUBLIC_API_BASE_URL_PLACEHOLDER | ||
|
||
RUN yarn global add turbo | ||
COPY . . | ||
|
||
RUN turbo prune --scope=web --scope=space --scope=admin --docker | ||
|
||
# ***************************************************************************** | ||
# STAGE 2: Install dependencies & build the project | ||
# ***************************************************************************** | ||
# Add lockfile and package.json's of isolated subworkspace | ||
FROM node:18-alpine AS installer | ||
|
||
RUN apk add --no-cache libc6-compat | ||
WORKDIR /app | ||
|
||
# First install the dependencies (as they change less often) | ||
COPY .gitignore .gitignore | ||
COPY --from=builder /app/out/json/ . | ||
COPY --from=builder /app/out/yarn.lock ./yarn.lock | ||
RUN yarn install | ||
|
||
# # Build the project | ||
COPY --from=builder /app/out/full/ . | ||
COPY turbo.json turbo.json | ||
|
||
ARG NEXT_PUBLIC_API_BASE_URL="" | ||
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_ADMIN_BASE_URL="" | ||
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" | ||
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH | ||
|
||
ARG NEXT_PUBLIC_SPACE_BASE_URL="" | ||
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" | ||
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH | ||
|
||
ENV NEXT_TELEMETRY_DISABLED 1 | ||
ENV TURBO_TELEMETRY_DISABLED 1 | ||
|
||
RUN yarn turbo run build | ||
|
||
# ***************************************************************************** | ||
# STAGE 3: Copy the project and start it | ||
# ***************************************************************************** | ||
# FROM makeplane/plane-aio-base AS runner | ||
FROM makeplane/plane-aio-slim-base:develop AS runner | ||
|
||
WORKDIR /app | ||
|
||
SHELL [ "/bin/bash", "-c" ] | ||
|
||
# PYTHON APPLICATION SETUP | ||
|
||
ENV PYTHONDONTWRITEBYTECODE 1 | ||
ENV PYTHONUNBUFFERED 1 | ||
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 | ||
|
||
COPY apiserver/requirements.txt ./api/ | ||
COPY apiserver/requirements ./api/requirements | ||
|
||
RUN python3.12 -m venv /app/venv && \ | ||
source /app/venv/bin/activate && \ | ||
/app/venv/bin/pip install --upgrade pip && \ | ||
/app/venv/bin/pip install -r ./api/requirements.txt --compile --no-cache-dir | ||
|
||
# Add in Django deps and generate Django's static files | ||
COPY apiserver/manage.py ./api/manage.py | ||
COPY apiserver/plane ./api/plane/ | ||
COPY apiserver/templates ./api/templates/ | ||
COPY package.json ./api/package.json | ||
|
||
COPY apiserver/bin ./api/bin/ | ||
|
||
RUN chmod +x ./api/bin/* | ||
RUN chmod -R 777 ./api/ | ||
|
||
# NEXTJS BUILDS | ||
|
||
COPY --from=installer /app/web/next.config.js ./web/ | ||
COPY --from=installer /app/web/package.json ./web/ | ||
COPY --from=installer /app/web/.next/standalone ./web | ||
COPY --from=installer /app/web/.next/static ./web/web/.next/static | ||
COPY --from=installer /app/web/public ./web/web/public | ||
|
||
COPY --from=installer /app/space/next.config.js ./space/ | ||
COPY --from=installer /app/space/package.json ./space/ | ||
COPY --from=installer /app/space/.next/standalone ./space | ||
COPY --from=installer /app/space/.next/static ./space/space/.next/static | ||
COPY --from=installer /app/space/public ./space/space/public | ||
|
||
COPY --from=installer /app/admin/next.config.js ./admin/ | ||
COPY --from=installer /app/admin/package.json ./admin/ | ||
COPY --from=installer /app/admin/.next/standalone ./admin | ||
COPY --from=installer /app/admin/.next/static ./admin/admin/.next/static | ||
COPY --from=installer /app/admin/public ./admin/admin/public | ||
|
||
ARG NEXT_PUBLIC_API_BASE_URL="" | ||
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_ADMIN_BASE_URL="" | ||
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" | ||
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH | ||
|
||
ARG NEXT_PUBLIC_SPACE_BASE_URL="" | ||
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL | ||
|
||
ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" | ||
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH | ||
|
||
ARG NEXT_PUBLIC_WEB_BASE_URL="" | ||
ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL | ||
|
||
ENV NEXT_TELEMETRY_DISABLED 1 | ||
ENV TURBO_TELEMETRY_DISABLED 1 | ||
|
||
COPY aio/supervisord.conf /app/supervisord.conf | ||
|
||
COPY aio/aio.sh /app/aio.sh | ||
RUN chmod +x /app/aio.sh | ||
|
||
COPY aio/pg-setup.sh /app/pg-setup.sh | ||
RUN chmod +x /app/pg-setup.sh | ||
|
||
COPY deploy/selfhost/variables.env /app/plane.env | ||
|
||
# NGINX Conf Copy | ||
COPY ./aio/nginx.conf.aio /etc/nginx/nginx.conf.template | ||
COPY ./nginx/env.sh /app/nginx-start.sh | ||
RUN chmod +x /app/nginx-start.sh | ||
|
||
RUN ./pg-setup.sh | ||
|
||
VOLUME [ "/app/data/minio/uploads", "/var/lib/postgresql/data" ] | ||
|
||
CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt | ||
|
||
FROM debian:12-slim | ||
|
||
# Set environment variables to non-interactive for apt | ||
ENV DEBIAN_FRONTEND=noninteractive | ||
|
||
SHELL [ "/bin/bash", "-c" ] | ||
|
||
# Update the package list and install prerequisites | ||
RUN apt-get update && \ | ||
apt-get install -y \ | ||
gnupg2 curl ca-certificates lsb-release software-properties-common \ | ||
build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ | ||
libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils \ | ||
tk-dev libffi-dev liblzma-dev supervisor nginx nano vim ncdu | ||
|
||
# Install Node.js 18 | ||
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ | ||
apt-get install -y nodejs | ||
|
||
# Install Python 3.12 from source | ||
RUN cd /usr/src && \ | ||
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz && \ | ||
tar xzf Python-3.12.0.tgz && \ | ||
cd Python-3.12.0 && \ | ||
./configure --enable-optimizations && \ | ||
make altinstall && \ | ||
rm -f /usr/src/Python-3.12.0.tgz | ||
|
||
RUN python3.12 -m pip install --upgrade pip | ||
|
||
RUN echo "alias python=/usr/local/bin/python3.12" >> ~/.bashrc && \ | ||
echo "alias pip=/usr/local/bin/pip3.12" >> ~/.bashrc | ||
|
||
# Clean up | ||
RUN apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* /usr/src/Python-3.12.0 | ||
|
||
WORKDIR /app | ||
|
||
RUN mkdir -p /app/{data,logs} && \ | ||
mkdir -p /app/data/{nginx} && \ | ||
mkdir -p /app/logs/{access,error} && \ | ||
mkdir -p /etc/supervisor/conf.d | ||
|
||
# Create Supervisor configuration file | ||
COPY supervisord-slim-base /app/supervisord.conf | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y sudo lsof net-tools libpq-dev procps gettext && \ | ||
apt-get clean | ||
|
||
RUN echo "alias python=/usr/local/bin/python3.12" >> ~/.bashrc && \ | ||
echo "alias pip=/usr/local/bin/pip3.12" >> ~/.bashrc | ||
|
||
# Expose ports for Redis, PostgreSQL, and MinIO | ||
EXPOSE 80 443 | ||
|
||
# Start Supervisor | ||
CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"] |
File renamed without changes.
Oops, something went wrong.