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

75 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: UE5 Ubantu & Docker 部署
date: 2023-09-12 18:20:39
excerpt:
tags:
- Ubantu
- Docker
rating: ⭐⭐
---
# 前言
本文假设系统已经安装完Docker并且读者已经将镜像拉取完毕。并且假设此电脑装有显卡且显存在3G以上切记AI专业显卡无法启动UE
- 文档地址:https://docs.unrealengine.com/5.3/en-US/quick-start-guide-for-using-container-images-in-unreal-engine/
- 镜像地址:https://github.com/orgs/epicgames/packages/container/package/unreal-engine
# UE安装
不同于Windows与Mac系统Linux没有提供Epic启动器但可以直接下载官方编译好的版本。各版本下载地址:https://www.unrealengine.com/en-US/linux
# UE镜像选择
- [runtime](https://github.com/orgs/epicgames/packages/container/unreal-engine/111082761?tag=runtime)
- [dev-5.3](https://github.com/orgs/epicgames/packages/container/unreal-engine/125977937?tag=dev-5.3)
- [dev-slim-5.3](https://github.com/orgs/epicgames/packages/container/unreal-engine/125977946?tag=dev-slim-5.3)
镜像主要分为runtime以及dev两种类型slim为瘦身版。主要的区别在于runtime是为了运行UE打包过的项目带有图形显示环境。dev则带有一个对应版本的虚幻引擎此引擎为源码编译版官方也提供执行编译&构建镜像资料有需求可以自行编译一般这种镜像是为了编译、打包、测试项目或者执行CPU操作所用。
官方的runtime容器用的是第三方制作的镜像(也可以算是官方的github的ReadME说是参与了官方容器的开发):
- https://github.com/adamrehn/ue4-runtime
- https://hub.docker.com/r/adamrehn/ue4-runtime/tags
更多信息可以参考这位大佬的网站:https://unrealcontainers.com/docs/obtaining-images/write-your-own
本人因为项目需求使用`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。
```bash
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之后将目录映射进容器比如
```bash
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
```
后台运行:
```bash
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"
**为了防止生成解决方案失败可以把项目目录与UE目录设置权限。**
PS.实际是因为Ubantu系统版本可能与容器系统并不相同所以需要重新编译一下才能运行项目。