mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 17:46:46 +00:00
a61dfeb1e4
## Description: The binary created a new tunnel on startup, and if the container crashed looped, then it would generate 100s of tunnels causing us to reach the 1000 tunnel limit. Now the config is stored on a mounted volume, so if the container restarts it sees the existing config and does not create a new tunnel. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: evan
72 lines
1.9 KiB
Docker
72 lines
1.9 KiB
Docker
# Use an official Node runtime as the base image
|
|
FROM node:24-slim AS base
|
|
|
|
# Create dependency layer
|
|
FROM base AS dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
nginx \
|
|
supervisor \
|
|
git \
|
|
curl \
|
|
jq \
|
|
wget \
|
|
apache2-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb > cloudflared.deb \
|
|
&& dpkg -i cloudflared.deb \
|
|
&& rm cloudflared.deb
|
|
|
|
# Final image
|
|
FROM base
|
|
|
|
# Copy installed packages from dependencies stage
|
|
COPY --from=dependencies / /
|
|
|
|
ARG GIT_COMMIT=unknown
|
|
ENV GIT_COMMIT=$GIT_COMMIT
|
|
|
|
# Set the working directory in the container
|
|
WORKDIR /usr/src/app
|
|
|
|
# Copy package.json and package-lock.json
|
|
COPY package*.json ./
|
|
|
|
# Install dependencies while bypassing Husky hooks
|
|
ENV HUSKY=0
|
|
ENV NPM_CONFIG_IGNORE_SCRIPTS=1
|
|
RUN mkdir -p .git && npm install
|
|
|
|
# Copy the rest of the application code
|
|
COPY . .
|
|
|
|
# Build the client-side application
|
|
RUN npm run build-prod
|
|
|
|
# So we can see which commit was used to build the container
|
|
# https://openfront.io/commit.txt
|
|
RUN echo $GIT_COMMIT > static/commit.txt
|
|
|
|
# Copy Nginx configuration and ensure it's used instead of the default
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
RUN rm -f /etc/nginx/sites-enabled/default
|
|
|
|
# Setup supervisor configuration
|
|
RUN mkdir -p /var/log/supervisor
|
|
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
|
|
|
# Copy and make executable the startup script
|
|
COPY startup.sh /usr/local/bin/
|
|
RUN chmod +x /usr/local/bin/startup.sh
|
|
|
|
RUN mkdir -p /etc/cloudflared && \
|
|
chown -R node:node /etc/cloudflared && \
|
|
chmod -R 755 /etc/cloudflared
|
|
|
|
# Set Cloudflared config directory to a volume mount location
|
|
ENV CF_CONFIG_PATH=/etc/cloudflared/config.yml
|
|
ENV CF_CREDS_PATH=/etc/cloudflared/creds.json
|
|
|
|
# Use the startup script as the entrypoint
|
|
ENTRYPOINT ["/usr/local/bin/startup.sh"]
|