diff --git a/Dockerfile b/Dockerfile index ab71619..796e788 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,11 @@ # Use the official Node.js 22.4.1 image FROM node:22.4.1-alpine -# Install Redis and tmux -RUN apk add --no-cache redis tmux +# Install Redis, MySQL, and tmux +RUN apk add --no-cache redis mysql mysql-client tmux && \ + mkdir -p /run/mysqld && \ + chown -R mysql:mysql /run/mysqld && \ + mysql_install_db --user=mysql --datadir=/var/lib/mysql # Set the working directory in the container WORKDIR /usr/src/ @@ -13,11 +16,8 @@ COPY package*.json ./ # Install application dependencies RUN npm install -# Copy prisma schema -COPY prisma ./prisma/ - -# Generate Prisma client -RUN npx prisma generate +# Import migrations +RUN npx mikro-orm migration:up # Copy the rest of your application code to the container COPY . . @@ -25,12 +25,14 @@ COPY . . # Build the application RUN npm run build -# Expose the ports your Node.js application and Redis will listen on -EXPOSE 80 6379 +# Expose the ports your Node.js application, Redis, and MySQL will listen on +EXPOSE 80 6379 3306 -# Create a shell script to run Redis, run migrations, and start the application in a tmux session +# Create a shell script to run Redis, MySQL, run migrations, and start the application in a tmux session RUN echo '#!/bin/sh' > /usr/src/start.sh && \ echo 'redis-server --daemonize yes' >> /usr/src/start.sh && \ + echo 'mysqld --user=mysql --datadir=/var/lib/mysql &' >> /usr/src/start.sh && \ + echo 'sleep 10' >> /usr/src/start.sh && \ echo 'npx prisma migrate deploy' >> /usr/src/start.sh && \ echo 'tmux new-session -d -s nodeapp "node dist/server.js"' >> /usr/src/start.sh && \ echo 'echo "App is running in tmux session. Attach with: tmux attach-session -t nodeapp"' >> /usr/src/start.sh && \