Dockerfile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. # Copyright (c) Contributors to the Open 3D Engine Project.
  2. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  3. #
  4. # SPDX-License-Identifier: Apache-2.0 OR MIT
  5. #
  6. ARG INPUT_ARCHITECTURE=amd64
  7. ARG INPUT_IMAGE=ubuntu
  8. ARG INPUT_TAG=jammy
  9. FROM ${INPUT_ARCHITECTURE}/${INPUT_IMAGE}:${INPUT_TAG}
  10. # Argument for determining the package type ('server', 'headless-server', 'game', or 'unified-launcher')
  11. ARG PACKAGE_TYPE=game # Default to 'game'
  12. # o3de repo arguments
  13. ARG O3DE_REPO=https://github.com/o3de/o3de
  14. ARG O3DE_BRANCH=development
  15. ARG O3DE_COMMIT=HEAD
  16. # o3de-extras repo arguments
  17. ARG O3DE_EXTRAS_REPO=https://github.com/o3de/o3de-extras
  18. ARG O3DE_EXTRAS_BRANCH=development
  19. ARG O3DE_EXTRAS_COMMIT=HEAD
  20. # o3de-multiplayersample repo arguments
  21. ARG O3DE_MPS_REPO=https://github.com/o3de/o3de-multiplayersample
  22. ARG O3DE_MPS_BRANCH=development
  23. ARG O3DE_MPS_COMMIT=HEAD
  24. # o3de-multiplayersample-assets repo arguments
  25. ARG O3DE_MPS_ASSETS_REPO=https://github.com/o3de/o3de-multiplayersample-assets
  26. ARG O3DE_MPS_ASSETS_BRANCH=development
  27. ARG O3DE_MPS_ASSETS_COMMIT=HEAD
  28. # Argument to run fullscreen (for game, unified, and server package types)
  29. ARG RUN_FULLSCREEN=0
  30. # Set the workspace to work from
  31. ENV WORKSPACE=/data/workspace
  32. WORKDIR $WORKSPACE
  33. # o3de Environment
  34. ENV O3DE_REPO=$O3DE_REPO
  35. ENV O3DE_BRANCH=$O3DE_BRANCH
  36. ENV O3DE_COMMIT=$O3DE_COMMIT
  37. ENV O3DE_ROOT=$WORKSPACE/o3de
  38. # o3de-extras Environment
  39. ENV O3DE_EXTRAS_REPO=$O3DE_EXTRAS_REPO
  40. ENV O3DE_EXTRAS_BRANCH=$O3DE_EXTRAS_BRANCH
  41. ENV O3DE_EXTRAS_COMMIT=$O3DE_EXTRAS_COMMIT
  42. ENV O3DE_EXTRAS_ROOT=$WORKSPACE/o3de-extras
  43. # o3de-multiplayersample Environment
  44. ENV O3DE_MPS_ASSETS_REPO=$O3DE_MPS_ASSETS_REPO
  45. ENV O3DE_MPS_ASSETS_BRANCH=$O3DE_MPS_ASSETS_BRANCH
  46. ENV O3DE_MPS_ASSETS_COMMIT=$O3DE_MPS_ASSETS_COMMIT
  47. ENV O3DE_MPS_ASSETS_ROOT=$WORKSPACE/o3de-multiplayersample-assets
  48. # o3de-multiplayersample-assets Environment
  49. ENV O3DE_MPS_REPO=$O3DE_MPS_REPO
  50. ENV O3DE_MPS_BRANCH=$O3DE_MPS_BRANCH
  51. ENV O3DE_MPS_COMMIT=$O3DE_MPS_COMMIT
  52. ENV O3DE_MPS_ROOT=$WORKSPACE/o3de-multiplayersample
  53. # Validate and set the package type
  54. RUN if [ $PACKAGE_TYPE = "game" ];then echo "Building Game Launcher Image"; \
  55. elif [ $PACKAGE_TYPE = "unified" ];then echo "Building Unified Launcher Image"; \
  56. elif [ $PACKAGE_TYPE = "server" ];then echo "Building Server Launcher Image"; \
  57. elif [ $PACKAGE_TYPE = "headless" ];then echo "Building Headless Server Launcher Image"; \
  58. else echo "Invalid PACKAGE_TYPE argument '$PACKAGE_TYPE'. Must be one of ('server', 'headless', 'game', or 'unified')" && exit 1; \
  59. fi
  60. ENV PACKAGE_TYPE=$PACKAGE_TYPE
  61. ENV RUN_FULLSCREEN=$RUN_FULLSCREEN
  62. # Add additional package repositories needed for packages
  63. RUN apt-get update && \
  64. apt-get upgrade -y && \
  65. apt-get install -y --no-install-recommends \
  66. ca-certificates \
  67. git \
  68. git-lfs \
  69. libstdc++-12-dev \
  70. clang\
  71. ninja-build \
  72. cmake \
  73. libglu1-mesa-dev \
  74. libxcb-xinerama0 \
  75. libxcb-xinput0 \
  76. libxcb-xinput-dev \
  77. libxcb-xfixes0-dev \
  78. libxcb-xkb-dev \
  79. libxkbcommon-dev \
  80. libxkbcommon-x11-dev \
  81. libfontconfig1-dev \
  82. libcurl4-openssl-dev \
  83. libsdl2-dev \
  84. zlib1g-dev \
  85. mesa-common-dev \
  86. libssl-dev \
  87. libxcb-icccm4 \
  88. libxcb-image0 \
  89. libxcb-keysyms1 \
  90. libxcb-render-util0 \
  91. libxcb-randr0 \
  92. libnvidia-gl-470 \
  93. libunwind-dev \
  94. libzstd-dev \
  95. binutils-dev \
  96. libvulkan1
  97. COPY build.sh $WORKSPACE/build.sh
  98. COPY launch.sh $WORKSPACE/launch.sh
  99. RUN $WORKSPACE/build.sh \
  100. && rm $WORKSPACE/build.sh
  101. ENV NVIDIA_VISIBLE_DEVICES all
  102. ENV NVIDIA_DRIVER_CAPABILITIES all
  103. ENTRYPOINT ["/bin/bash", "-c", "/data/workspace/launch.sh"]