Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie ein Container-Image für GameLift Amazon-Server
In diesem Thema wird beschrieben, wie Sie mit Ihrer Spieleserver-Software ein Container-Image erstellen, das Sie verwenden können. Amazon GameLift Servers Ein Gameserver-Container-Image enthält die Programmdatei des Spielservers und alle Abhängigkeiten, die für die Ausführung erforderlich sind. Spieleserver-Container-Images werden mit einer Amazon GameLift Servers verwalteten Container-Hosting-Lösung verwendet. Einzelheiten zur Erstellung der Komplettlösung finden Sie unter:
Führe die folgenden Aufgaben aus, um dein Gameserver-Container-Image für den Einsatz in einer Amazon GameLift Servers Containerflotte vorzubereiten. Bevor Sie mit diesen Aufgaben beginnen, schließen Sie die Integration Ihres Spieleservercodes in das Amazon GameLift Servers Server-SDK ab.
Themen
Erstelle ein Container-Image für den Spieleserver
Folgen Sie diesen Anweisungen, wenn Sie auf einer Linux-based Plattform arbeiten oder das Windows-Subsystem für Linux (WSL) mit installiertem Docker verwenden.
Um ein Gameserver-Container-Image zu erstellen
-
Bereite ein Arbeitsverzeichnis mit deiner Gameserver-Software vor. Erstelle auf einem lokalen Computer ein Arbeitsverzeichnis, um die Dateien für deinen Spieleserver-Container zu organisieren. Ihr Container-Image verwendet diese Dateistruktur, wenn Sie den Container für Amazon GameLift Servers Ressourcen zum Hosten bereitstellen. Beispiel:
[~/]$mkdir -p work/glc/gamebuild && cd work && find .. ./glc ./glc/gamebuildAnmerkung
Wenn du diese Funktion ausprobierst und noch keinen funktionierenden Spieleserver-Build hast, probiere unseren Beispiel-Spieleserver aus SimpleServer
, der auf verfügbar ist GitHub. Erstelle ein neues Dockerfile mit der bereitgestellten Vorlage.
Folgen Sie den Anweisungen in der Dockerfile-Vorlage, um sie für Ihren eigenen Gebrauch zu aktualisieren.
Aktualisieren Sie das Basisimage nach Bedarf.
Lege Umgebungsvariablen für deinen Spieleserver-Build fest.
Erstelle das Container-Image. Führen Sie das aus
docker buildund geben Sie Ihren eigenen Repository-Namen an. Beispiel:[~/work/glc]$docker build -t<local repository name>:<optional tag>.Sie können Ihre Repositorys und Bild-IDs mit dem
docker imagesBefehl anzeigen, wie in diesem Beispiel veranschaulicht:
Diese Vorlage enthält die Mindestanweisungen, die ein Gameserver-Container benötigt, um in einer Amazon GameLift Servers Flotte verwendet werden zu können. Ändere den Inhalt nach Bedarf für deinen Spieleserver.
# 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"]
Übertragen Sie ein Container-Image auf Amazon ECR
Nachdem Sie ein Container-Image für die Bereitstellung erstellt habenAmazon GameLift Servers, speichern Sie das Image in einem öffentlichen oder privaten Repository in Amazon ECR. Diesem Repository wird ein URI-Wert zugewiesen, der Amazon GameLift Servers verwendet wird, um einen Snapshot des Images für die Bereitstellung in einer Containerflotte zu erstellen.
Anmerkung
Wenn Sie noch kein privates Amazon ECR-Repository haben, erstellen Sie eines.
Um Ihr Container-Image auf Amazon ECR zu übertragen
-
Holen Sie sich Ihre Amazon ECR-Anmeldeinformationen. Bevor Sie ein Container-Image an Amazon ECR übertragen, erfassen Sie zunächst Ihre AWS Anmeldeinformationen in temporärer Form und stellen Sie sie Docker zur Verfügung. Docker benötigt diese Anmeldeinformationen, um sich anzumelden.
[~/work/glc]$aws ecr get-login-password --regionus-west-2| docker login --username AWS --password-stdinaws_account_id.dkr.ecr.us-west-2.amazonaws.com.rproxy.goskope.comWARNING! 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 Kopieren Sie die URI des privaten Amazon ECR-Repositorys, das
Sie verwenden möchten. Wenden Sie ein Amazon ECR-Tag auf Ihr Container-Image an.
Beispiel
[~/work/glc]$docker tag<IMAGE ID from above><Amazon ECR private repository URI>:<optional tag>Übertragen Sie Ihr Container-Image auf Amazon ECR
Beispiel
[~/work/glc]$docker image push<Amazon ECR private repository URI>