|
| 1 | +FROM node:22-alpine AS jsbuild |
| 2 | +ENV PNPM_HOME=/pnpm |
| 3 | +ENV PATH=/pnpm:/pnpm/bin:$PATH |
| 4 | +ENV CI=1 |
| 5 | +ENV TURBO_TELEMETRY_DISABLED=1 |
| 6 | +RUN corepack enable |
| 7 | +RUN apk add --no-cache libc6-compat |
| 8 | +WORKDIR /app |
| 9 | +COPY . . |
| 10 | +RUN pnpm add -g turbo@2.9.18 |
| 11 | +RUN pnpm install --frozen-lockfile |
| 12 | +RUN turbo run build --filter=web --filter=admin --filter=live |
| 13 | + |
| 14 | +FROM python:3.12.10-alpine AS apibuild |
| 15 | +ENV PYTHONDONTWRITEBYTECODE=1 |
| 16 | +ENV PYTHONUNBUFFERED=1 |
| 17 | +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 |
| 18 | +WORKDIR /code |
| 19 | +RUN apk add --no-cache libpq libxslt xmlsec ca-certificates openssl libffi-dev |
| 20 | +COPY apps/api/requirements.txt ./requirements.txt |
| 21 | +COPY apps/api/requirements ./requirements |
| 22 | +RUN apk add --no-cache --virtual .build-deps \ |
| 23 | + "bash~=5.2" g++ gcc cargo git make postgresql-dev libc-dev linux-headers \ |
| 24 | + && pip install -r requirements.txt --compile --no-cache-dir \ |
| 25 | + && apk del .build-deps \ |
| 26 | + && rm -rf /var/cache/apk/* |
| 27 | +COPY apps/api/manage.py manage.py |
| 28 | +COPY apps/api/plane plane/ |
| 29 | +COPY apps/api/templates templates/ |
| 30 | +COPY apps/api/package.json package.json |
| 31 | +COPY apps/api/bin ./bin/ |
| 32 | +RUN apk add --no-cache "bash~=5.2" && mkdir -p /code/plane/logs && chmod +x ./bin/* |
| 33 | + |
| 34 | +FROM caddy:2.11.3-alpine AS caddyimg |
| 35 | + |
| 36 | +FROM python:3.12.10-alpine AS runner |
| 37 | +WORKDIR /app |
| 38 | +RUN apk add --no-cache libpq libxslt xmlsec ca-certificates openssl nss-tools bash curl |
| 39 | + |
| 40 | +COPY --from=jsbuild /usr/lib /usr/lib |
| 41 | +COPY --from=jsbuild /usr/local/lib /usr/local/lib |
| 42 | +COPY --from=jsbuild /usr/local/include /usr/local/include |
| 43 | +COPY --from=jsbuild /usr/local/bin /usr/local/bin |
| 44 | +COPY --from=apibuild /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/ |
| 45 | +COPY --from=apibuild /usr/local/bin/ /usr/local/bin/ |
| 46 | + |
| 47 | +COPY --from=caddyimg /usr/bin/caddy /usr/bin/caddy |
| 48 | + |
| 49 | +COPY --from=apibuild /code /app/backend |
| 50 | +COPY --from=jsbuild /app/apps/web/build/client /app/web |
| 51 | +COPY --from=jsbuild /app/apps/admin/build/client /app/admin |
| 52 | + |
| 53 | +COPY --from=jsbuild /app/packages /app/live/packages |
| 54 | +COPY --from=jsbuild /app/node_modules /app/live/node_modules |
| 55 | +COPY --from=jsbuild /app/apps/live/dist /app/live/apps/live/dist |
| 56 | +COPY --from=jsbuild /app/apps/live/node_modules /app/live/apps/live/node_modules |
| 57 | +COPY --from=jsbuild /app/apps/live/package.json /app/live/apps/live/package.json |
| 58 | + |
| 59 | +RUN pip install supervisor --no-cache-dir |
| 60 | +RUN mkdir -p /etc/supervisor/conf.d /app/logs /app/data /app/proxy |
| 61 | + |
| 62 | +COPY deploy/railway/Caddyfile /app/proxy/Caddyfile |
| 63 | +COPY deploy/railway/supervisor.conf /etc/supervisor/conf.d/supervisor.conf |
| 64 | +COPY deploy/railway/start.sh /app/start.sh |
| 65 | +RUN chmod +x /app/start.sh |
| 66 | + |
| 67 | +CMD ["/app/start.sh"] |
0 commit comments