mirror of
https://github.com/makeplane/plane.git
synced 2026-07-10 04:25:24 +02:00
The community AIO Dockerfile declared the VOLUME instruction with
single quotes: VOLUME ['/app/data', '/app/logs']. Docker's JSON (exec)
form requires double quotes; with single quotes the line is parsed as
the shell form and the bracket/comma tokens become literal volume
paths ('[/app/data,' and '/app/logs]').
Docker tolerated these non-absolute anonymous volume paths at container
create time until Engine 29.5.0, which now rejects them with
"invalid mount config for type volume: invalid mount path: '[/app/data,'
mount path must be absolute", breaking `docker compose up --force-recreate`
and any container recreation for the AIO community image.
Switching to the valid JSON array form fixes the parsing.
67 lines
2.0 KiB
Docker
67 lines
2.0 KiB
Docker
ARG PLANE_VERSION=v0.27.1
|
|
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt
|
|
|
|
# **************************************************
|
|
# STAGE 0: Image Loading
|
|
# **************************************************
|
|
FROM node:22-alpine AS node
|
|
|
|
FROM makeplane/plane-frontend:${PLANE_VERSION} AS web-img
|
|
FROM makeplane/plane-backend:${PLANE_VERSION} AS backend-img
|
|
FROM makeplane/plane-space:${PLANE_VERSION} AS space-img
|
|
FROM makeplane/plane-admin:${PLANE_VERSION} AS admin-img
|
|
FROM makeplane/plane-live:${PLANE_VERSION} AS live-img
|
|
FROM makeplane/plane-proxy:${PLANE_VERSION} AS proxy-img
|
|
|
|
# **************************************************
|
|
# STAGE 1: Runner
|
|
# **************************************************
|
|
FROM python:3.12.10-alpine AS runner
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apk add --no-cache \
|
|
"libpq" \
|
|
"libxslt" \
|
|
"xmlsec"
|
|
|
|
|
|
COPY --from=node /usr/lib /usr/lib
|
|
COPY --from=node /usr/local/lib /usr/local/lib
|
|
COPY --from=node /usr/local/include /usr/local/include
|
|
COPY --from=node /usr/local/bin /usr/local/bin
|
|
|
|
COPY --from=web-img /usr/share/nginx/html /app/web
|
|
COPY --from=space-img /app /app/space
|
|
COPY --from=admin-img /usr/share/nginx/html/god-mode /app/admin
|
|
COPY --from=live-img /app /app/live
|
|
|
|
RUN rm -rf /app/space/apps/space/.next/cache
|
|
|
|
COPY --from=proxy-img /usr/bin/caddy /usr/bin/caddy
|
|
COPY dist/Caddyfile /app/proxy/Caddyfile
|
|
|
|
COPY --from=backend-img /code /app/backend
|
|
COPY --from=backend-img /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
|
|
COPY --from=backend-img /usr/local/bin/ /usr/local/bin/
|
|
|
|
RUN apk add --no-cache nss-tools bash curl uuidgen ncdu vim
|
|
|
|
RUN pip install supervisor
|
|
RUN mkdir -p /etc/supervisor/conf.d
|
|
|
|
COPY start.sh /app/start.sh
|
|
COPY dist/plane.env /app/plane.env
|
|
COPY supervisor.conf /etc/supervisor/conf.d/supervisor.conf
|
|
|
|
RUN mkdir -p /app/logs/access && \
|
|
mkdir -p /app/logs/error && \
|
|
mkdir -p /app/data && \
|
|
chmod +x /app/start.sh
|
|
|
|
VOLUME ["/app/data", "/app/logs"]
|
|
|
|
EXPOSE 80 443
|
|
|
|
CMD ["/app/start.sh"]
|