

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membangun gambar kontainer untuk Amazon GameLift Servers
<a name="containers-prepare-images"></a>

Topik ini menjelaskan cara membuat gambar kontainer dengan perangkat lunak server game Anda untuk digunakanAmazon GameLift Servers. Gambar kontainer server game mencakup server game yang dapat dieksekusi dan dependensi apa pun yang perlu dijalankan. Gambar kontainer server game digunakan dengan solusi hosting kontainer Amazon GameLift Servers terkelola. Untuk detail tentang membangun solusi lengkap, lihat:
+ [Peta jalan pengembangan untuk hosting dengan kontainer Amazon GameLift Servers terkelola](gamelift-roadmap-containers.md)
+ [Cara kerja kontainer Amazon GameLift Servers](containers-howitworks.md)

Selesaikan tugas-tugas berikut untuk menyiapkan image kontainer server game Anda untuk diterapkan ke armada Amazon GameLift Servers kontainer. Sebelum memulai tugas-tugas ini, selesaikan mengintegrasikan kode server game Anda dengan SDK Amazon GameLift Servers server.

**Topics**
+ [Buat gambar kontainer server game](#containers-prepare-images-build)
+ [Dorong gambar kontainer ke Amazon ECR](#containers-prepare-images-upload)

## Buat gambar kontainer server game
<a name="containers-prepare-images-build"></a>

Ikuti petunjuk ini saat bekerja pada platform berbasis Linux atau menggunakan Windows Subsystem for Linux (WSL) dengan Docker diinstal.

**Untuk membuat image kontainer server game**

1. Siapkan direktori kerja dengan perangkat lunak server game Anda. Pada mesin lokal, buat direktori kerja untuk mengatur file untuk wadah server game Anda. Gambar kontainer Anda menggunakan struktur file ini saat menerapkan kontainer ke Amazon GameLift Servers sumber daya untuk hosting. Contoh:

   ```
   [~/]$ mkdir -p work/glc/gamebuild && cd work && find .
   .
   ./glc
   ./glc/gamebuild
   ```
**catatan**  
Jika Anda mencoba fitur ini dan belum memiliki build server game yang berfungsi, coba contoh server game kami [SimpleServer](https://github.com/aws-solutions-library-samples/guidance-for-custom-game-backend-hosting-on-aws/tree/main/BackendFeatures/AmazonGameLiftIntegration/SimpleServer), yang tersedia di GitHub.

1. Buat Dockerfile baru menggunakan template yang disediakan.

1. Ikuti petunjuk di template Dockerfile untuk memperbaruinya untuk Anda gunakan sendiri. 
   + Perbarui gambar dasar sesuai kebutuhan.
   + Tetapkan variabel lingkungan untuk build server game Anda. 

1. Bangun gambar kontainer. Jalankan`docker build`, tentukan nama repositori Anda sendiri. Contoh:

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

   Anda dapat melihat repositori dan gambar IDs menggunakan `docker images` perintah, seperti yang diilustrasikan dalam contoh ini:

## Template Dockerfile untuk gambar wadah server game
<a name="w2aab9c11c13c17c15b1"></a>

Template ini berisi instruksi minimum yang dibutuhkan wadah server game untuk dapat digunakan dalam Amazon GameLift Servers armada. Ubah konten sesuai kebutuhan untuk server game Anda. 

```
# 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"]
```

## Dorong gambar kontainer ke Amazon ECR
<a name="containers-prepare-images-upload"></a>

Setelah Anda membuat gambar kontainer untuk penyebaranAmazon GameLift Servers, simpan gambar di repositori publik atau pribadi di Amazon ECR. Repositori ini diberi nilai URI, yang Amazon GameLift Servers digunakan untuk mengambil snapshot gambar untuk penyebaran ke armada kontainer. 

**catatan**  
[Jika Anda belum memiliki repositori pribadi Amazon ECR, buatlah satu.](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) 

**Untuk mendorong gambar kontainer Anda ke Amazon ECR**

1. Dapatkan kredensyal Amazon ECR Anda. Sebelum mendorong image kontainer ke Amazon ECR, pertama-tama dapatkan AWS kredensyal Anda dalam bentuk sementara dan berikan ke Docker. Docker membutuhkan kredensyal ini untuk masuk.

   ```
   [~/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
   ```

1. Salin URI dari [repositori pribadi Amazon ECR](https://console.aws.amazon.com/ecr/private-registry/repositories) yang ingin Anda gunakan. 

1. Terapkan tag Amazon ECR ke gambar kontainer Anda.  
**Example**  

   ```
   [~/work/glc]$ docker tag <IMAGE ID from above> <Amazon ECR private repository URI>:<optional tag>
   ```

1. Dorong gambar kontainer Anda ke Amazon ECR  
**Example**  

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