You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
8.6 KiB
186 lines
8.6 KiB
ARG NODE_VERSION=22.13.1
|
|
|
|
# --------------------
|
|
# Base Image
|
|
# --------------------
|
|
FROM node:$NODE_VERSION-bullseye-slim AS base
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
build-essential \
|
|
curl \
|
|
jq \
|
|
libjemalloc2 \
|
|
python3 \
|
|
tar \
|
|
git && \
|
|
curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | tee /usr/share/keyrings/stripe.gpg && \
|
|
echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | tee -a /etc/apt/sources.list.d/stripe.list && \
|
|
apt-get update && \
|
|
apt-get install -y \
|
|
stripe && \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
apt clean
|
|
|
|
# --------------------
|
|
# Development Base
|
|
# --------------------
|
|
FROM base AS development-base
|
|
WORKDIR /home/ghost
|
|
|
|
COPY package.json yarn.lock ./
|
|
|
|
# Calculate a hash of the yarn.lock file
|
|
## See development.entrypoint.sh for more info
|
|
RUN mkdir -p .yarnhash && md5sum yarn.lock | awk '{print $1}' > .yarnhash/yarn.lock.md5
|
|
|
|
# Copy all package.json files
|
|
COPY apps/stats/package.json apps/stats/package.json
|
|
COPY apps/admin-x-activitypub/package.json apps/admin-x-activitypub/package.json
|
|
COPY apps/admin-x-design-system/package.json apps/admin-x-design-system/package.json
|
|
COPY apps/admin-x-framework/package.json apps/admin-x-framework/package.json
|
|
COPY apps/admin-x-settings/package.json apps/admin-x-settings/package.json
|
|
COPY apps/announcement-bar/package.json apps/announcement-bar/package.json
|
|
COPY apps/comments-ui/package.json apps/comments-ui/package.json
|
|
COPY apps/portal/package.json apps/portal/package.json
|
|
COPY apps/posts/package.json apps/posts/package.json
|
|
COPY apps/shade/package.json apps/shade/package.json
|
|
COPY apps/signup-form/package.json apps/signup-form/package.json
|
|
COPY apps/sodo-search/package.json apps/sodo-search/package.json
|
|
COPY e2e/package.json e2e/package.json
|
|
COPY ghost/admin/lib/asset-delivery/package.json ghost/admin/lib/asset-delivery/package.json
|
|
COPY ghost/admin/lib/ember-power-calendar-moment/package.json ghost/admin/lib/ember-power-calendar-moment/package.json
|
|
COPY ghost/admin/lib/ember-power-calendar-utils/package.json ghost/admin/lib/ember-power-calendar-utils/package.json
|
|
COPY ghost/admin/package.json ghost/admin/package.json
|
|
COPY ghost/core/package.json ghost/core/package.json
|
|
COPY ghost/i18n/package.json ghost/i18n/package.json
|
|
|
|
# Copy patches directory so patch-package can apply patches during yarn install
|
|
COPY patches patches
|
|
|
|
RUN --mount=type=cache,target=/usr/local/share/.cache/yarn,id=yarn-cache \
|
|
yarn install --frozen-lockfile --prefer-offline
|
|
|
|
# --------------------
|
|
# Shade Builder
|
|
# --------------------
|
|
FROM development-base AS shade-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/shade apps/shade
|
|
RUN cd apps/shade && yarn build
|
|
|
|
# --------------------
|
|
# Admin-x-design-system Builder
|
|
# --------------------
|
|
FROM development-base AS admin-x-design-system-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/admin-x-design-system apps/admin-x-design-system
|
|
RUN cd apps/admin-x-design-system && yarn build
|
|
|
|
# --------------------
|
|
# Admin-x-framework Builder
|
|
# --------------------
|
|
FROM development-base AS admin-x-framework-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/admin-x-framework apps/admin-x-framework
|
|
COPY --from=shade-builder /home/ghost/apps/shade/es apps/shade/es
|
|
COPY --from=shade-builder /home/ghost/apps/shade/types apps/shade/types
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/es apps/admin-x-design-system/es
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/types apps/admin-x-design-system/types
|
|
RUN cd apps/admin-x-framework && yarn build
|
|
|
|
# --------------------
|
|
# Stats Builder
|
|
# --------------------
|
|
FROM development-base AS stats-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/stats apps/stats
|
|
COPY --from=shade-builder /home/ghost/apps/shade apps/shade
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/es apps/admin-x-design-system/es
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/types apps/admin-x-design-system/types
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/dist apps/admin-x-framework/dist
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/types apps/admin-x-framework/types
|
|
RUN cd apps/stats && yarn build
|
|
|
|
# --------------------
|
|
# Posts Builder
|
|
# --------------------
|
|
FROM development-base AS posts-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/posts apps/posts
|
|
COPY --from=shade-builder /home/ghost/apps/shade apps/shade
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/es apps/admin-x-design-system/es
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/types apps/admin-x-design-system/types
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/dist apps/admin-x-framework/dist
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/types apps/admin-x-framework/types
|
|
RUN cd apps/posts && yarn build
|
|
|
|
# --------------------
|
|
# Admin-x-settings Builder
|
|
# --------------------
|
|
FROM development-base AS admin-x-settings-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/admin-x-settings apps/admin-x-settings
|
|
COPY --from=shade-builder /home/ghost/apps/shade apps/shade
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system apps/admin-x-design-system
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/dist apps/admin-x-framework/dist
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/types apps/admin-x-framework/types
|
|
RUN cd apps/admin-x-settings && yarn build
|
|
|
|
# --------------------
|
|
# Admin-x-activitypub Builder
|
|
# --------------------
|
|
FROM development-base AS admin-x-activitypub-builder
|
|
WORKDIR /home/ghost
|
|
COPY apps/admin-x-activitypub apps/admin-x-activitypub
|
|
COPY ghost/core/core/frontend/src/cards ghost/core/core/frontend/src/cards
|
|
COPY --from=shade-builder /home/ghost/apps/shade apps/shade
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/es apps/admin-x-design-system/es
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/types apps/admin-x-design-system/types
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/dist apps/admin-x-framework/dist
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/types apps/admin-x-framework/types
|
|
RUN cd apps/admin-x-activitypub && yarn build
|
|
|
|
# --------------------
|
|
# Admin Ember Builder
|
|
# --------------------
|
|
FROM development-base AS admin-ember-builder
|
|
WORKDIR /home/ghost
|
|
COPY ghost/admin ghost/admin
|
|
# Admin's asset-delivery pipeline needs the ghost module to resolve
|
|
COPY ghost/core/package.json ghost/core/package.json
|
|
COPY ghost/core/index.js ghost/core/index.js
|
|
COPY --from=stats-builder /home/ghost/apps/stats/dist apps/stats/dist
|
|
COPY --from=posts-builder /home/ghost/apps/posts/dist apps/posts/dist
|
|
COPY --from=admin-x-settings-builder /home/ghost/apps/admin-x-settings/dist apps/admin-x-settings/dist
|
|
COPY --from=admin-x-activitypub-builder /home/ghost/apps/admin-x-activitypub/dist apps/admin-x-activitypub/dist
|
|
RUN mkdir -p ghost/core/core/built/admin && cd ghost/admin && yarn build
|
|
|
|
# --------------------
|
|
# Ghost Assets Builder
|
|
# --------------------
|
|
FROM development-base AS ghost-assets-builder
|
|
WORKDIR /home/ghost
|
|
COPY ghost/core ghost/core
|
|
RUN cd ghost/core && yarn build:assets
|
|
|
|
# --------------------
|
|
# Development
|
|
# --------------------
|
|
FROM development-base AS development
|
|
COPY . .
|
|
COPY --from=ghost-assets-builder /home/ghost/ghost/core/core/frontend/public ghost/core/core/frontend/public
|
|
COPY --from=shade-builder /home/ghost/apps/shade/es apps/shade/es
|
|
COPY --from=shade-builder /home/ghost/apps/shade/types apps/shade/types
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/es apps/admin-x-design-system/es
|
|
COPY --from=admin-x-design-system-builder /home/ghost/apps/admin-x-design-system/types apps/admin-x-design-system/types
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/dist apps/admin-x-framework/dist
|
|
COPY --from=admin-x-framework-builder /home/ghost/apps/admin-x-framework/types apps/admin-x-framework/types
|
|
COPY --from=stats-builder /home/ghost/apps/stats/dist apps/stats/dist
|
|
COPY --from=posts-builder /home/ghost/apps/posts/dist apps/posts/dist
|
|
COPY --from=admin-x-settings-builder /home/ghost/apps/admin-x-settings/dist apps/admin-x-settings/dist
|
|
COPY --from=admin-x-activitypub-builder /home/ghost/apps/admin-x-activitypub/dist apps/admin-x-activitypub/dist
|
|
COPY --from=admin-ember-builder /home/ghost/ghost/admin/dist ghost/admin/dist
|
|
COPY --from=admin-ember-builder /home/ghost/ghost/core/core/built/admin ghost/core/core/built/admin
|
|
|
|
CMD ["yarn", "dev"]
|