🚧 Improve dockerfile and start script and fix permission issue by adding new user with permission to read / write to /data folder
This commit is contained in:
30
Dockerfile
30
Dockerfile
@@ -1,6 +1,11 @@
|
||||
FROM node:20.5-slim
|
||||
WORKDIR /app
|
||||
|
||||
ARG UID=1001
|
||||
ARG GID=1001
|
||||
RUN groupadd -g $GID homarr-group
|
||||
RUN useradd -r -u $UID -g $GID homarr
|
||||
|
||||
# Define node.js environment variables
|
||||
ARG PORT=7575
|
||||
|
||||
@@ -18,17 +23,30 @@ COPY .next/standalone ./
|
||||
COPY .next/static ./.next/static
|
||||
COPY ./scripts/run.sh ./scripts/run.sh
|
||||
COPY ./drizzle ./drizzle
|
||||
|
||||
COPY ./drizzle/migrate ./migrate
|
||||
COPY ./tsconfig.json ./migrate/tsconfig.json
|
||||
|
||||
RUN mkdir /data
|
||||
COPY ./src/migrate.ts ./src/migrate.ts
|
||||
RUN chown -R homarr:homarr-group /data
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update -y && apt-get install -y openssl wget
|
||||
|
||||
# Required for migration
|
||||
# Move node_modules to temp location to avoid overwriting
|
||||
RUN mv node_modules _node_modules
|
||||
RUN rm package.json
|
||||
RUN yarn add typescript ts-node dotenv drizzle-orm@0.28.6 better-sqlite3@8.6.0 @types/better-sqlite3
|
||||
RUN mv node_modules node_modules_migrate
|
||||
|
||||
# Install dependencies for migration
|
||||
RUN cp ./migrate/package.json ./package.json
|
||||
RUN yarn
|
||||
|
||||
# Copy better_sqlite3 build for current platform
|
||||
RUN cp /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/_node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
||||
|
||||
# Copy node_modules for migration to migrate folder for migration script
|
||||
RUN mv node_modules ./migrate/node_modules
|
||||
# Copy temp node_modules of app to app folder
|
||||
RUN mv _node_modules node_modules
|
||||
|
||||
# Expose the default application port
|
||||
@@ -43,4 +61,8 @@ ENV NEXTAUTH_SECRET NOT_IN_USE_BECAUSE_JWTS_ARE_UNUSED
|
||||
HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT} || exit 1
|
||||
|
||||
USER homarr
|
||||
|
||||
CMD ["sh", "./scripts/run.sh"]
|
||||
|
||||
# TEMPORARY: "db:migrate": "ts-node ./migrate.ts ../drizzle"
|
||||
Reference in New Issue
Block a user