Creación de una imagen de contenedor para Amazon GameLift Servers - Amazon GameLift Servers

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de una imagen de contenedor para Amazon GameLift Servers

En este tema se describe cómo crear una imagen de contenedor con el software de servidor de juegos para su uso con Amazon GameLift Servers. Una imagen de contenedor de servidor de juegos incluye el ejecutable del servidor de juegos, así como cualquier dependencia que este necesite para ejecutarse. Las imágenes de contenedor de servidor de juegos se utilizan con una solución de alojamiento de contenedores administrados de Amazon GameLift Servers. Para obtener más información sobre cómo crear la solución completa, consulte:

Complete las siguientes tareas para preparar la imagen de contenedor del servidor de juegos para su implementación en una flota de contenedores de Amazon GameLift Servers. Antes de iniciar estas tareas, termine de integrar el código del servidor de juegos con el SDK del servidor de Amazon GameLift Servers.

Creación de una imagen de contenedor del servidor de juegos

Siga estas instrucciones cuando trabaje en una plataforma basada en Linux o utilice Windows Subsystem para Linux (WSL) con Docker instalado.

Creación de una imagen de contenedor del servidor de juegos
  1. Prepare un directorio de trabajo con el software de servidor de juegos. En una máquina local, cree un directorio de trabajo para organizar los archivos del contenedor del servidor de juegos. La imagen de contenedor utiliza esta estructura de archivos al implementar el contenedor en los recursos de Amazon GameLift Servers para el alojamiento. Por ejemplo:

    [~/]$ mkdir -p work/glc/gamebuild && cd work && find . . ./glc ./glc/gamebuild
    nota

    Si estás probando esta función y aún no tienes una versión de servidor de juegos que funcione, prueba nuestro servidor de juegos de muestra SimpleServer, que está disponible en GitHub.

  2. Cree un nuevo archivo Dockerfile utilizando la plantilla proporcionada.

  3. Siga las instrucciones de la plantilla de Dockerfile para actualizarla para su propio uso.

    • Actualice la imagen base como corresponda.

    • Establezca variables de entorno para la compilación del servidor de juegos.

  4. Compile la imagen de contenedor. Ejecute la docker build especificando el nombre de su propio repositorio. Por ejemplo:

    [~/work/glc]$ docker build -t <local repository name>:<optional tag> .

    Puedes ver tus repositorios e imágenes IDs con el docker images comando, tal y como se muestra en este ejemplo:

Esta plantilla contiene las instrucciones mínimas que necesita un contenedor de servidor de juegos para poder utilizarse en una flota de Amazon GameLift Servers. Modifique el contenido como sea necesario para el servidor de juegos.

# Base image # ---------- # Add the base image that you want to use, # Make sure to use an image with the same architecture as the # Instance type you are planning to use on your fleets. FROM public.ecr.aws/amazonlinux/amazonlinux # # Game build directory # -------------------- # Add your gamebuild directory to the env variable below. # The game build provided here needs to be integrated with server sdk for Amazon GameLift Servers. ENV GAME_BUILD_DIRECTORY="<ADD_GAME_BUILD_DIRECTORY>" \ # # Game executable and launch parameters # --------------- # Add the relative path to your executable in the 'GAME_EXECUTABLE' env variable below. # The game build provided over here needs to be integrated with server sdk for Amazon GameLift Servers. # This template assumes that the executable path is relative to the game build directory. # Add any launch parameters to pass into your executable in the 'LAUNCH_PARAMS' env variable below. # Add 'HOME_DIR' to identify where the game executable and logs exist. GAME_EXECUTABLE="<ADD NAME OF EXECUTABLE WITHIN THE GAME DIRECTORY>" \ LAUNCH_PARAMS=<ADD LAUNCH PARAMETERS> \ HOME_DIR="/local/game" \ # Install dependencies as necessary RUN yum install -y shadow-utils RUN mkdir -p $HOME_DIR COPY ./$GAME_BUILD_DIRECTORY/ $HOME_DIR # Change directory to home WORKDIR $HOME_DIR # Set up for 'gamelift' user RUN useradd -m gamelift && \ echo "gamelift ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \ chown -R gamelift:gamelift $HOME_DIR # Add permissions to game build RUN chmod +x ./$GAME_EXECUTABLE USER gamelift # Check directory before starting the container RUN ls -lhrt . # Check path before starting the container RUN echo $PATH # Start the game build ENTRYPOINT ["/bin/sh", "-c", "./$GAME_EXECUTABLE", "$LAUNCH_PARAMS"]

Inserción de una imagen de contenedor en Amazon ECR

Una vez que haya creado una imagen de contenedor para su implementación en Amazon GameLift Servers, almacene la imagen en un repositorio público o privado de Amazon ECR. A este repositorio se le asigna un valor de URI, que Amazon GameLift Servers utiliza para tomar una instantánea de la imagen para la implementación en una flota de contenedores.

nota

Si aún no tiene un repositorio privado de Amazon ECR, debe crear uno.

Inserción de la imagen de contenedor en Amazon ECR
  1. Obtenga sus credenciales de Amazon ECR. Antes de insertar una imagen de contenedor en Amazon ECR, primero debe adquirir sus credenciales de AWS de forma temporal y proporcionárselas a Docker. Docker necesita estas credenciales para iniciar sesión.

    [~/work/glc]$ aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-west-2.amazonaws.com WARNING! Your password will be stored unencrypted in /home/user-name/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
  2. Copie el URI del repositorio privado de Amazon ECR que desea utilizar.

  3. Aplique una etiqueta de Amazon ECR a la imagen de contenedor.

    [~/work/glc]$ docker tag <IMAGE ID from above> <Amazon ECR private repository URI>:<optional tag>
  4. Inserción de la imagen de contenedor en Amazon ECR

    [~/work/glc]$ docker image push <Amazon ECR private repository URI>