🚧PRACTICA: Creando una web de emulación de juegos con docker-compose

Objetivos:

  • Desplegar el servicio online para todos

  • ¿se puede hacer un proxy para cada plataforma? -> necesitamos varios servicios a la vez?

    • Plataforma PS1

    • Plataforma NES

  • Modificar el index.html a un estilo propio

  • Todo con docker-compose

Pasos para montar un servidor de EmulatorJS con Docker Compose

  1. Prepara los archivos necesarios:

    • Descarga el paquete de EmulatorJS o clona el repositorio desde https://github.com/ethanaobrien/emulatorjs.

    • Crea un directorio para tus ROMs (por ejemplo, roms/) y colócalos allí.

    • Asegúrate de que tienes Docker y Docker Compose instalados.


  1. Crea un Dockerfile para EmulatorJS: Crea un archivo Dockerfile para alojar los archivos del servidor web:

    FROM nginx:alpine
    
    # Copia los archivos de EmulatorJS al directorio del servidor web
    COPY ./emulatorjs /usr/share/nginx/html
    
    # Expone el puerto del servidor
    EXPOSE 80
    
    CMD ["nginx", "-g", "daemon off;"]
    • Este archivo usa NGINX como servidor web para alojar EmulatorJS.

    • Copia los archivos del proyecto EmulatorJS al directorio donde NGINX los puede servir (/usr/share/nginx/html).


  1. Estructura del proyecto: Asegúrate de que la estructura del proyecto sea similar a esta:

    emulatorjs-docker/
    ├── Dockerfile
    ├── docker-compose.yml
    ├── emulatorjs/         # Archivos de EmulatorJS
    │   ├── index.html
    │   ├── ...
    ├── roms/               # Carpeta para tus ROMs
    │   ├── game1.nes
    │   ├── game2.snes

  1. Crea un archivo docker-compose.yml: Aquí está un ejemplo de archivo docker-compose.yml para configurar el servidor EmulatorJS:

    version: '3.8'
    
    services:
      emulatorjs:
        build:
          context: .
          dockerfile: Dockerfile
        container_name: emulatorjs-server
        ports:
          - "8080:80" # Mapea el puerto 8080 del host al puerto 80 del contenedor
        volumes:
          - ./roms:/usr/share/nginx/html/roms # Monta la carpeta de ROMs
        restart: always
    • build:: Especifica que se debe construir la imagen Docker desde el Dockerfile.

    • ports:: El puerto 8080 en tu máquina local se conecta al puerto 80 del contenedor.

    • volumes:: Monta la carpeta local de ROMs (./roms) en el contenedor para que los juegos sean accesibles.


  1. Construye y ejecuta los contenedores:

    • Navega al directorio donde está tu archivo docker-compose.yml.

    • Construye y levanta el servidor con los siguientes comandos:

      docker-compose up -d

    Esto construirá la imagen, iniciará el contenedor, y montará el servidor en http://localhost:8080.


  1. Accede al servidor EmulatorJS:

    • Abre un navegador web e ingresa http://localhost:8080.

    • La interfaz de EmulatorJS debería cargarse.

    • Los ROMs estarán disponibles en la carpeta /roms. Si EmulatorJS no detecta automáticamente los juegos, edita los archivos de configuración (games.js o index.html) para que apunten a tus ROMs.

Referencias:

Última actualización