a year ago
Is there a recommended way to build images with Git submodules? Since your .dockerignore likely excludes .git, I cannot do a git submodule init && git submodule update --recursive and expect it to work.
Should I do a multi-stage build instead i.e git clone using alpine/git do submodule update, then copy that into a node:22 image for builds?
6 Replies
a year ago
A two stage build worked. But can we please get a pre-build command in Railway? Its useful in quite a few places.
a year ago
Hello,
I'm glad you solved the problem!
If you would like to request that as a feature, please open a thread here - https://station.railway.com/feedback
Best,
Brody
Status changed to Awaiting User Response Railway • about 1 year ago
scutifer
A two stage build worked. But can we please get a pre-build command in Railway? Its useful in quite a few places.
a year ago
Hey, can you please share with me what you did here?
Status changed to Awaiting Railway Response Railway • 12 months ago
ritvik
Hey, can you please share with me what you did here?
a year ago
Hey Ritvik, will let them answer but also Railway has pre-deploy commands in case they're helpful for you https://docs.railway.com/guides/pre-deploy-command
Status changed to Awaiting User Response Railway • 12 months ago
a year ago
Pre-deploy commands execute between building and deploying your application
Not helpful, because I need to run git submodule update --init --recursive before the build step. Even if I could, running this inside a container is pointless as inside it there is no .git folder
Status changed to Awaiting Railway Response Railway • 12 months ago
a year ago
A pre-build, not a pre-deploy command is what's needed here. See https://station.railway.com/feedback/new-feature-request-pre-build-command-h-03c341f7
Here's a sample 2-stage build.
# Stage 1: Clone repository with submodules
FROM alpine/git:latest as repo
ARG GITHUB_TOKEN
ENV GITHUB_TOKEN=${GITHUB_TOKEN}
ARG RAILWAY_GIT_COMMIT_SHA
ENV RAILWAY_GIT_COMMIT_SHA=${RAILWAY_GIT_COMMIT_SHA}
RUN echo "Cache bust: ${RAILWAY_GIT_COMMIT_SHA}"
WORKDIR /repo
RUN git config --global url."https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/"
RUN git clone --depth=1 --single-branch --branch main ${GIT_REPO_URL} .
RUN git submodule init && git submodule update --depth=1
# Stage 2: Build the application
FROM node:22
## ... cache bust again if you need to ...
WORKDIR /app
# Copy repository files from git stage (including submodules)
COPY --from=repo /repo .
## ... your usual dockerfile ...Status changed to Awaiting User Response chandrika • 12 months ago
Status changed to Solved scutifer • 12 months ago
