| # Base image with Python and Node.js |
| FROM nikolaik/python-nodejs:python3.10-nodejs18 |
|
|
| # Install necessary packages, Nginx, and dependencies for Unity game server |
| USER root |
|
|
| RUN apt-get -y update && \ |
| apt-get install -y nginx libglu1 xvfb libxcursor1 ca-certificates && \ |
| apt-get clean && \ |
| update-ca-certificates |
|
|
| # Create necessary directories and set permissions for 'pn' |
| RUN mkdir -p /var/cache/nginx \ |
| /var/log/nginx \ |
| /var/lib/nginx \ |
| /var/run/nginx.pid \ |
| /home/pn/app/build |
|
|
| RUN chown -R pn:pn /var/cache/nginx \ |
| /var/log/nginx \ |
| /var/lib/nginx \ |
| /var/run/nginx.pid \ |
| /home/pn/app/build |
|
|
| # Switch to non-root user 'pn' |
| USER pn |
| ENV HOME=/home/pn \ |
| PATH=/home/pn/.local/bin:$PATH |
|
|
| # Set the working directory to /home/pn/app |
| WORKDIR /home/pn/app |
|
|
| # Copy Python dependencies, Nginx configuration, and application code |
| COPY --chown=pn requirements.txt requirements.txt |
| RUN pip install --no-cache-dir -r requirements.txt |
|
|
| COPY --chown=pn nginx.conf /etc/nginx/sites-available/default |
|
|
| # Copy Unity game server build |
| #COPY --chown=pn build/ /home/pn/app/build/ |
|
|
| # Copy the run script |
| COPY --chown=pn run.sh /home/pn/app/ |
|
|
| # Ensure the Unity server binary is executable |
| RUN chmod +x /home/pn/app/build/linuxBuild.x86_64 |
|
|
| # Run the application |
| CMD ["bash", "run.sh"] |