15min

Containerizing Your Game Server



Document image

Requirements

  • A working game server executable that runs on Linux
  • An automated build pipeline such as Jenkins or CircleCI.
  • Linux or Windows build machine with Docker installed.
  • Team or Large Docker Hub account. (hub.docker.com/pricing)

Choosing an Operating System

We can support any Linux flavour if needed, but currently, we recommend choosing an OS from the list below as our packages are pre-build for these releases. Please contact support@gameye.com if your flavour of choice isn't on the list.

Ubuntu 16 LTS Ubuntu 18 LTS Debian 9 Debian 10

Preparing the build

Your build pipeline should produce a game server executable including all files and dependencies that are required for the game server to start successfully, such as third-party libraries like Steam or anti-cheat services.

Dockerfile

Docker builds images by reading instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.

Please see our example Dockerfile, in terms of what it could potentially look like.

YAML
|

If you have any questions related to the above don't hesitate to contact the support team who are available to provide any additional context, the above example is merely to provide some guidance on what your Dockerfile might contain.

Building the game server image

Build the Docker image:

Shell
|

You can also build an image with multiple tags:

Shell
|

It's required to push an image with a unique version tag, we recommend using your internal build number for this.

Pushing the game server image

Before we can push images to a Docker Hub repository we first need to authenticate. This is done via docker login:

Shell
|

Push the image to Docker Hub:

Shell
|

As the image can be several or even tens of gigabytes big, it's recommended to run on the image push job on a machine with a high-speed upload connection.

Sending a build notification

When a new image has been pushed, Gameye needs to be notified that a new image has been build and is ready for distribution.

For Docker Hub, you can add the following webhook URL: https://image-updater-docker-hub.gameye.com/webhook

When the first server has been populated with the new image this automatically considered the new "live" version of the game. An image of 5GB takes around 1-3 minutes to be downloaded and extracted, depending on how close they are to the CDN endpoints.

Image Permissions

When the image is pushed successfully to Docker hub. We need to set up access management so that Gameye is able to pull the image.

For this, first, you need to create a team. When you have a team, you can add Docker hub accounts to it. Next, the team needs to have permission to access the repository. Read-only permission is sufficient.

Please contact support@gameye.com to request the Gameye Docker accounts that need to be added to the team.

Separating development and production builds

Separating development and production builds can be accomplished by setting up two different Docker repositories and by pushing the different builds to their respective repo.

Example repository layout:

organization/example-game-prod organization/example-game-dev

Gameye will supply a separate gameKey and API token the second repository.



Updated 05 Apr 2022
Did this page help you?
Yes
No