1
0
forked from noxious/server

Updated Dockerfile

This commit is contained in:
2025-02-07 23:23:03 +01:00
parent a28b1b9bee
commit 30310bf0cf
2 changed files with 60 additions and 84 deletions

View File

@ -1,57 +1,39 @@
FROM node:23.7.0-alpine
RUN npm install -g npm@11.1.0
# Install dependencies with versions
RUN sysctl -w vm.overcommit_memory=1 && \
# Install dependencies and setup environment in a single layer
RUN npm install -g npm@11.1.0 && \
apk add --no-cache \
redis \
mariadb \
mariadb-client \
tmux \
mariadb-server-utils \
mariadb-connector-c
# Create non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Setup MariaDB with proper permissions
RUN mkdir -p /run/mysqld /var/lib/mysql /var/log/mysql && \
chown -R mysql:mysql /run/mysqld && \
chown -R mysql:mysql /var/lib/mysql && \
chown -R mysql:mysql /var/log/mysql && \
chmod 777 /run/mysqld && \
chmod 777 /var/lib/mysql && \
chmod 777 /var/log/mysql && \
redis \
mariadb \
mariadb-client \
tmux \
mariadb-server-utils \
mariadb-connector-c && \
# Create non-root user and groups
addgroup -S appgroup && \
adduser -S appuser -G appgroup && \
adduser appuser mysql && \
# Setup MariaDB directories and permissions
mkdir -p /run/mysqld /var/lib/mysql /var/log/mysql && \
chown -R mysql:mysql /run/mysqld /var/lib/mysql /var/log/mysql && \
chmod 755 /run/mysqld /var/lib/mysql /var/log/mysql && \
mysql_install_db --user=mysql --datadir=/var/lib/mysql && \
touch /var/log/mysql/error.log && \
chown mysql:mysql /var/log/mysql/error.log && \
chmod 666 /var/log/mysql/error.log
chmod 644 /var/log/mysql/error.log
WORKDIR /usr/src/app
# Copy application files
COPY package*.json ./
COPY start.sh ./start.sh
COPY . .
# Setup application permissions
RUN npm ci --only=production && \
chmod +x ./start.sh && \
chown -R appuser:appgroup .
# Grant necessary permissions to appuser
RUN adduser appuser mysql && \
chmod 755 /var/lib/mysql && \
mkdir -p /var/log/mysql && \
chown -R mysql:mysql /var/log/mysql && \
touch /var/log/mysql/error.log && \
chown mysql:mysql /var/log/mysql/error.log
# Grant necessary permissions to appuser
RUN adduser appuser mysql && \
# Give full access to mysql directories
chmod -R 777 /var/lib/mysql && \
chmod -R 777 /run/mysqld && \
chmod -R 777 /var/log/mysql
USER appuser
EXPOSE 80 6379 3306