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

153 lines
6.1 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: Untitled
date: 2023-09-12 18:20:39
excerpt:
tags:
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
## 桌面版问题解决
>docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]问题解决
```
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镜像选择
- [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则带有一个对应版本的虚幻引擎此引擎为源码编译版官方也提供执行编译&构建镜像资料,有需求可以自行编译,一遍这种镜像是为了编译、打包项目所用。
https://github.com/adamrehn/ue4-runtime
可以参考这位大佬的网站:https://unrealcontainers.com/docs/obtaining-images/write-your-own
# 编译命令
## 生成Project
/home/user/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh /home/user/Projects/AIMotionRender/AIMotionRender.uproject -game -engine -rocket -progress -VSCode
## Start Project
/home/user/Linux_Unreal_Engine_5.1.1/Engine/Binaries/Linux/UnrealEditor -logs "/home/user/Projects/AIMotionRender/AIMotionRender.uproject"
## Build
/home/user/Linux_Unreal_Engine_5.1.1/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/home/user/Projects/AIMotionRender/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
## UE Docker
### UE-dev 5.1
sudo docker run --gpus=all --rm -ti -v "/media/user//home/user/Projects/AIMotionRender:/project" ghcr.io/epicgames/unreal-engine:dev-5.1.1
### UE-Runtime
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/Projects/AIMotionRender:/project \
adamrehn/ue4-runtime:22.04-vulkan-x11
#### 编译Puert
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/Projects/AIMotionRender:/project \
-v /home/user/node:/home/user/node \
-v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \
adamrehn/ue4-runtime:22.04-vulkan-x11
sudo apt-get install clang
sudo apt-get install libc++-dev
sudo apt-get install libc++abi-dev
sudo apt-get install make
curl -sL https://deb.nodesource.com/setup_16.x | sudo -e bash -
sudo apt-get install -y nodejs
cd /home/user/Projects/backend-nodejs/node-script
npm install -s commander
sudo apt-get install git
/home/user/Projects/backend-nodejs/linux.sh
root 用户
sudo docker run -u 0 --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/Projects/AIMotionRender:/project \
-v /home/user/node:/home/user/node \
-v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \
adamrehn/ue4-runtime:22.04-vulkan-x11
#### 编译v8
/home/user/Projects/backend-nodejs/linux.sh
### Startup
cd /home/ue4/UnrealEngine/Engine/Binaries/Linux \
./UnrealEditor -log "/project/AIMotionRender.uproject"
/home/ue4/UnrealEngine/Engine/Binaries/Linux/UnrealEditor -log "/project/AIMotionRender.uproject"
### Compiler
/home/ue4/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh Development Linux -Project="/project/AIMotionRender.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
## UE Docker
# 需求
1. 参考 adamrehn/ue4-runtime:22.04-vulkan-x11重新构建容器
2. 安装下列环境以进行Puerts的V8环境编译
```bash
sudo apt-get install clang
sudo apt-get install libc++-dev
sudo apt-get install libc++abi-dev
sudo apt-get install make
curl -sL https://deb.nodesource.com/setup_16.x | sudo -e bash -
sudo apt-get install -y nodejs
sudo apt-get install git
```
```bash
# 下载编译脚本,脚本需要手动修改一下
cd /home/user/Projects/
git clone https://github.com/puerts/backend-nodejs.git
cd /home/user/Projects/backend-nodejs/node-script
npm install -s commander
/home/user/Projects/backend-nodejs/linux.sh
```
## 原容器存在问题
adamrehn/ue4-runtime:22.04-vulkan-x11存在的问题
1. 缺少相关编译环境。
2. 没有设置环境变量不知道root、ue4账号密码。
3. 参与编译的libatomic.so.1库是32位的。
经过测试使用官方镜像安装的Ubantu可以正常进行编译UE项目以及Puerts v8环境并且可以正常打开项目原容器可以编译UE项目但因为编译的Puerts v8环境有一些问题导致无法运行Puerts。
## 启动命令参考
```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/Projects/AIMotionRender:/project \
adamrehn/ue4-runtime:22.04-vulkan-x11
编译v8环境用
sudo docker run -u 0 --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/Projects/AIMotionRender:/project \
-v /home/user/node:/home/user/node \
-v /home/user/Projects/backend-nodejs:/home/user/Projects/backend-nodejs \
adamrehn/ue4-runtime:22.04-vulkan-x11
```