Skip to content

Commit be22678

Browse files
committed
Merged dspace-cris-2024_02_x into task/dspace-cris-2024_02_x/DSC-2481
2 parents 17ebffb + 8ef0515 commit be22678

51 files changed

Lines changed: 822 additions & 280 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docker.yml

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,66 @@ name: Docker images
99
on:
1010
push:
1111
branches:
12-
- main
13-
- 'dspace-**'
12+
- main-cris
13+
- 'dspace-cris-*_02_x'
1414
tags:
15-
- 'dspace-**'
15+
- 'dspace-cris-**'
1616
pull_request:
1717

1818
permissions:
1919
contents: read # to fetch code (actions/checkout)
2020
packages: write # to write images to GitHub Container Registry (GHCR)
2121

2222
jobs:
23+
24+
####################################################
25+
# Build/Push the '4science/dspace-cris-dependencies' image.
26+
# This image is used by all other DSpace build jobs.
27+
####################################################
28+
dspace-cris-angular-dependencies:
29+
# Ensure this job never runs on forked repos. It's only executed for '4science/dspace'
30+
if: github.repository == '4science/dspace-angular'
31+
# Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
32+
uses: 4science/DSpace/.github/workflows/reusable-docker-build.yml@dspace-cris-2024_02_x
33+
with:
34+
build_id: dspace-cris-angular-dependencies
35+
image_name: 4science/dspace-cris-angular-dependencies
36+
dockerfile_path: ./Dockerfile.dependencies
37+
secrets:
38+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
39+
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
40+
41+
2342
#############################################################
24-
# Build/Push the 'dspace/dspace-angular' image
43+
# Build/Push the '4science/dspace-cris-angular' image
2544
#############################################################
2645
dspace-angular:
2746
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular'
28-
if: github.repository == 'dspace/dspace-angular'
47+
if: github.repository == '4science/dspace-angular'
2948
# Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
30-
uses: DSpace/DSpace/.github/workflows/reusable-docker-build.yml@main
49+
uses: 4science/DSpace/.github/workflows/reusable-docker-build.yml@dspace-cris-2024_02_x
50+
needs: dspace-cris-angular-dependencies
3151
with:
32-
build_id: dspace-angular-dev
33-
image_name: dspace/dspace-angular
52+
build_id: dspace-cris-angular-dev
53+
image_name: 4science/dspace-cris-angular
3454
dockerfile_path: ./Dockerfile
3555
secrets:
3656
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
3757
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
3858

3959
#############################################################
40-
# Build/Push the 'dspace/dspace-angular' image ('-dist' tag)
60+
# Build/Push the '4science/dspace-cris-angular' image ('-dist' tag)
4161
#############################################################
4262
dspace-angular-dist:
4363
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular'
44-
if: github.repository == 'dspace/dspace-angular'
64+
if: github.repository == '4science/dspace-angular'
4565
# Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
46-
uses: DSpace/DSpace/.github/workflows/reusable-docker-build.yml@main
66+
uses: 4science/DSpace/.github/workflows/reusable-docker-build.yml@dspace-cris-2024_02_x
67+
# Must run after 'dspace-dependencies' job above
68+
needs: dspace-cris-angular-dependencies
4769
with:
48-
build_id: dspace-angular-dist
49-
image_name: dspace/dspace-angular
70+
build_id: dspace-cris-angular-dist
71+
image_name: 4science/dspace-cris-angular
5072
dockerfile_path: ./Dockerfile.dist
5173
# As this is a "dist" image, its tags are all suffixed with "-dist". Otherwise, it uses the same
5274
# tagging logic as the primary 'dspace/dspace-angular' image above.

Dockerfile

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
# This image will be published as dspace/dspace-angular
22
# See https://github.com/DSpace/dspace-angular/tree/main/docker for usage details
33

4-
FROM docker.io/node:18-alpine
4+
ARG NODE_VERSION=22
5+
ARG DSPACE_VERSION=dspace-cris-2024_02_x
6+
ARG DOCKER_REGISTRY=docker.io
57

6-
# Ensure Python and other build tools are available
7-
# These are needed to install some node modules, especially on linux/arm64
8-
RUN apk add --update python3 make g++ && rm -rf /var/cache/apk/*
8+
FROM ${DOCKER_REGISTRY:-docker.io}/4science/dspace-cris-angular-dependencies:${DSPACE_VERSION:-dspace-cris-2024_02_x} AS dev
99

1010
WORKDIR /app
1111
ADD . /app/
1212
EXPOSE 4000
1313

14-
# We run yarn install with an increased network timeout (5min) to avoid "ESOCKETTIMEDOUT" errors from hub.docker.com
15-
# See, for example https://github.com/yarnpkg/yarn/issues/5540
16-
RUN yarn install --network-timeout 300000
17-
1814
# When running in dev mode, 4GB of memory is required to build & launch the app.
1915
# This default setting can be overridden as needed in your shell, via an env file or in docker-compose.
2016
# See Docker environment var precedence: https://docs.docker.com/compose/environment-variables/envvars-precedence/
@@ -25,4 +21,4 @@ ENV NODE_OPTIONS="--max_old_space_size=4096"
2521
# NOTE: At this time it is only possible to run Docker container in Production mode
2622
# if you have a public URL. See https://github.com/DSpace/dspace-angular/issues/1485
2723
ENV NODE_ENV=development
28-
CMD yarn serve --host 0.0.0.0
24+
CMD ["yarn", "serve", "--host", "0.0.0.0"]

Dockerfile.build

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM node:20-alpine AS runtime
2+
3+
ENV NODE_ENV=production \
4+
NODE_OPTIONS="--max_old_space_size=4096"
5+
RUN apk add --update python3 make g++ && rm -rf /var/cache/apk/*
6+
RUN mkdir -p /app/source/config
7+
8+
WORKDIR /app/source
9+
COPY dist/ ./dist
10+
RUN ln -s /data/config.prod.yml /app/source/config/config.prod.yml || true
11+
12+
RUN adduser -D -h /home/dspace -s /bin/bash dspace
13+
RUN chown -R dspace:dspace /app/source/
14+
15+
USER dspace
16+
17+
CMD ["node", "dist/server/main"]

Dockerfile.dependencies

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Test build:
2+
# docker build -f Dockerfile.dependencies -t 4science/dspace-cris-angular-dependencies:dspace-cris-2024_02_x .
3+
4+
# Angular 17 + Node 22 optimized Dockerfile
5+
ARG NODE_VERSION=22
6+
ARG DSPACE_VERSION=dspace-cris-2024_02_x
7+
ARG DOCKER_REGISTRY=docker.io
8+
9+
FROM docker.io/node:${NODE_VERSION-22}-alpine AS dependencies
10+
11+
# Install build dependencies
12+
RUN apk add --no-cache python3 make g++
13+
14+
WORKDIR /app
15+
16+
# Install dependencies (use npm ci if you have package-lock.json)
17+
COPY package.json yarn.lock ./
18+
RUN yarn install --frozen-lockfile --network-timeout 300000

Dockerfile.dist

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
1+
# syntax=docker/dockerfile:1.7-labs
2+
13
# This image will be published as dspace/dspace-angular:$DSPACE_VERSION-dist
2-
# See https://github.com/DSpace/dspace-angular/tree/main/docker for usage details
4+
# See https://github.com/4science/dspace-angular/tree/main/docker for usage details
35

46
# Test build:
5-
# docker build -f Dockerfile.dist -t dspace/dspace-angular:dspace-8_x-dist .
7+
# docker build -f Dockerfile.dist -t 4science/dspace-angular:dspace-cris-2024_02_x-dist .
8+
9+
# Angular 17 + Node 22 optimized Dockerfile
10+
ARG NODE_VERSION=22
11+
ARG DSPACE_VERSION=dspace-cris-2024_02_x
12+
ARG DOCKER_REGISTRY=docker.io
613

7-
FROM docker.io/node:18-alpine AS build
14+
FROM ${DOCKER_REGISTRY:-docker.io}/4science/dspace-cris-angular-dependencies:${DSPACE_VERSION:-dspace-cris-2024_02_x} AS build
815

9-
# Ensure Python and other build tools are available
10-
# These are needed to install some node modules, especially on linux/arm64
11-
RUN apk add --update python3 make g++ && rm -rf /var/cache/apk/*
16+
COPY . /app/
1217

1318
WORKDIR /app
14-
COPY package.json yarn.lock ./
15-
RUN yarn install --network-timeout 300000
1619

17-
ADD . /app/
20+
# Build Angular app
1821
RUN yarn build:prod
22+
RUN yarn build:mirador
1923

20-
FROM node:18-alpine
21-
RUN npm install --global pm2
24+
# ---- Production image ----
25+
FROM docker.io/node:${NODE_VERSION-22}-alpine AS prod
2226

23-
COPY --chown=node:node --from=build /app/dist /app/dist
24-
COPY --chown=node:node config /app/config
25-
COPY --chown=node:node docker/dspace-ui.json /app/dspace-ui.json
27+
# Install pm2 globally and clean npm cache
28+
RUN npm install --global pm2 && npm cache clean --force
2629

2730
WORKDIR /app
31+
32+
# Only copy built files and config
33+
COPY --chown=node:node --from=build /app/dist /app/dist
34+
COPY --chown=node:node --from=build /app/config /app/config
35+
COPY --chown=node:node --from=build /app/docker/dspace-ui.json /app/dspace-ui.json
36+
2837
USER node
2938
ENV NODE_ENV=production
3039
EXPOSE 4000
31-
CMD pm2-runtime start dspace-ui.json --json
40+
41+
CMD ["pm2-runtime", "start", "dspace-ui.json", "--json"]

0 commit comments

Comments
 (0)