BlueRoseNote/03-UnrealEngine/流程管理与部署/UE5 Ubantu & Docker 部署.md

3.9 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
UE5 Ubantu & Docker 部署 2023-09-12 18:20:39

前言

本文假设系统已经安装完Docker并且读者已经将镜像拉取完毕。并且假设此电脑装有显卡且显存在3G以上切记AI专业显卡无法启动UE

UE镜像选择

镜像主要分为runtime以及dev两种类型slim为瘦身版。主要的区别在于runtime是为了运行UE打包过的项目带有图形显示环境。dev则带有一个对应版本的虚幻引擎此引擎为源码编译版官方也提供执行编译&构建镜像资料有需求可以自行编译一般这种镜像是为了编译、打包、测试项目或者执行CPU操作所用。

官方的runtime容器用的是第三方制作的镜像(也可以算是官方的github的ReadME说是参与了官方容器的开发):

本人因为项目需求使用ue4-runtime:22.04-vulkan-x11镜像。该镜像会将镜像内的UE窗口直接映射到系统桌面上可以方便得查看错误。

PS.dev镜像因为带有引擎需要下载20~30G只建议肉身翻墙或者高级科学上网工具者使用。但即使肉身翻墙10GB的那个包下载速度依然特别慢。最终解压完的镜像大约有60多G小空间的VPS也不好整。

问题解决

Docker提示没有可选设备驱动

docker: Error response from daemon: could not select device driver ““ with capabilities: gpu

解决方法安装nvidia-container-toolkit。

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

构建带有UE的图形环境

简单的做法就是下载一份Linux版本的UE之后将目录映射进容器比如

sudo docker run --gpus=all --rm -e DISPLAY -ti \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /home/user/Linux_Unreal_Engine_5.1.1:/home/ue4/UnrealEngine \
-v /home/user/Project/:/project \
adamrehn/ue4-runtime:22.04-vulkan-x11

后台运行:

sudo docker run --gpus=all -d --restart=always --privileged=true  -e DISPLAY -ti \
-v /home/user/Linux_Unreal_Engine_5.1.1:/home/ue4/UnrealEngine \
-v /home/user/Project/:/project \
adamrehn/ue4-runtime:22.04-vulkan-x11

之后可以使用docker exec让项目启动。

进入容器

!UEDocker_进入UE容器.png 使用第一个命令构建容器后,会进入容器,并且可以通过输入命令行进行操作,主要的命令有:

  • 生成解决方案://home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh /project/XXXX.uproject -game -engine -rocket -progress -VSCode
  • 编译项目:/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/XXXX.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
  • 启动项目:/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -logs "/project/XXXX.uproject"

PS.实际是因为Ubantu系统版本与容器系统并不相同所以需要重新编译一下才能运行项目。