TerminalDocker / Dockerfile
clone3's picture
Update Dockerfile
4c6e399 verified
# Use Node.js 18 base image
FROM node:18
# Set environment variables for user and password
ENV USER=myuser
ENV PASSWORD=mypassword
# Set the working directory inside the container
WORKDIR /app
# Create a non-root user to run the application
RUN useradd --create-home --shell /bin/bash appuser
# Clone the repository
RUN git clone https://github.com/ChrisCindy/node-web-console.git .
# Install dependencies
RUN npm install
# Modify the config/index.js file while still root (to avoid permission issues)
RUN sed -i "s/YOUR_USERNAME/${USER}/" config/index.js && \
sed -i "s/YOUR_PASSWORD/${PASSWORD}/" config/index.js
# Copy entrypoint script
COPY docker-entrypoint.sh /usr/local/bin/
# Change permissions of the entrypoint script (before switching users)
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# Ensure the non-root user has full access to the /app directory
RUN chown -R appuser:appuser /app
# Switch to the non-root user after all modifications are made
USER appuser
# Expose the port the app runs on
EXPOSE 3000
# Run the entrypoint script and start the web server in production mode
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["npm", "run", "prod"]