Unity
실습을 통해 배우고 Edgegap에서 첫 전용 서버를 배포해 보세요. 이 가이드를 끝까지 따라가면 비용 없이 Edgegap으로 전용 서버를 배포하게 됩니다.
✔️ 준비
⚙️ 1. 계정 연결
☑️ 로그인하고 Unity 콘솔에 Edgegap 플러그인과 관련된 새 오류가 없는지 확인하세요.
✅ 이제 다음 단계로 진행할 수 있습니다.
문제 해결 및 FAQ
!Success: 400 BAD REQUEST - POST | https://api.edgegap.com/v1/wizard/init-quick-start - {"message": "브라우저(또는 프록시)가 이 서버가 이해할 수 없는 요청을 보냈습니다."}
ZIP 파일을 복사하여 설치했거나 이런 방식으로 설치된 플러그인이 포함된 샘플 프로젝트를 사용했다면 Newtonsoft JSON 라이브러리를 포함한 패키지 종속성을 수동으로 설치해야 합니다. 다음을 참조하세요. 공식 플러그인 저장소.
이 경우가 아니라면 커뮤니티 디스코드 에서 도움을 요청해 주세요.
🔧 2. 게임 서버 빌드
Windows, Mac, Linux 어떤 머신을 사용하든 Linux 런타임용으로 서버를 빌드해야 합니다, 왜냐하면 오늘날 대부분의 클라우드 제공업체(Edgegap 포함)는 Linux에서 실행되기 때문입니다. 걱정하지 마세요. 이 플러그인을 사용하면 Linux 지식이 없어도 됩니다.
☑️ 필수 Unity Linux 빌드 도구가 설치되어 있는지 확인하세요.
☑️ 빌드 설정을 편집하여 필수 게임 씬이 모두 포함되었는지 확인하세요.
고급 Unity 사용자 - 선택적으로 변경 Unity 빌드 설정. 주의! 이로 인해 빌드가 손상될 수 있습니다.
☑️ 선택 사항: Edgegap Server Hosting 메뉴(계층 창에서 마우스 오른쪽 버튼 클릭 / ➕ 에서)에서 포트 검증 및 환경 부트스트래핑을 위한 netcode 전용 스크립트를 초기 서버 씬에 추가하세요.

단계 Unity를 완료하면 포트 검증 스크립트가 netcode 주소 또는 포트가 Edgegap의 앱 버전 포트 매핑 구성과 일치하지 않을 경우 경고를 로그에 남깁니다.
☑️ 구성이 만족스러우면 서버 빌드를 클릭하고 프로세스가 끝날 때까지 기다린 뒤 Unity 콘솔에 새 오류가 없는지 확인하세요. 이 단계를 완료하면 프로젝트 루트에 새 폴더가 생성됩니다 - Builds/EdgegapServer/ServerBuild .
✅ 이제 다음 단계로 진행할 수 있습니다.
문제 해결 및 FAQ
Unity: 지원되는 단독 대상은 OpenXR이 있는 Windows x64와 OSX뿐입니다.
서버를 빌드하기 전에 패키지를 열고 OpenXR을 비활성화하세요.
OpenXR 플러그인은 클라이언트에만 필요하며 Linux 서버 빌드와 호환되지 않습니다. 서버 빌드에서 제외해도 기능은 손실되지 않습니다.
🐋 3. 서버 컨테이너화
개발자 팀에서 작업한다는 것은 코드를 공유한다는 뜻입니다. 문제가 생겼을 때 듣고 싶지 않은 말은 “내 컴퓨터에서는 잘 되는데요”일 것입니다. 게임 서버는 어떤 머신에서도 안정적으로 실행되어야 합니다. 성공적인 게임의 서버는 전 세계 수천 대의 서버 머신에서 실행되기 때문입니다.
서버의 안정성을 높이기 위해 Docker를 사용합니다. Docker는 운영체제 수준까지 모든 서버 코드 종속성이 서버가 어디서 어떻게 시작되든 항상 정확히 동일하도록 보장하는 가상화 소프트웨어입니다.
☑️ 우선 검증 버튼을 눌러 다음을 완료했는지 확인하세요. 개발자 도구.
☑️ 다음 옵션을 구성할 수 있습니다(또는 기본값 유지):
빌드 경로 는 서버 빌드 산출물의 상대 경로입니다. 우선 기본값을 유지합시다.
Docker는 프로젝트 루트 폴더를 기준으로 한 빌드 경로만 허용합니다. 빌드를 프로젝트 폴더 안에 유지하세요.
이미지 이름 은 출시에 앞서 서버 빌드를 식별하는 고유한 이름입니다.
보통 게임 이름을 포함합니다. 예: “my-game-server”.
이미지 태그 는 이미지의 특정 버전을 가리키는 식별자입니다.
“빌드 산출물”이라는 용어는 때때로 이미지의 특정 버전을 의미하는 데 사용됩니다.
타임스탬프는 태그로 아주 좋습니다. 예:
2024.01.30-16.23.00-UTC.
Dockerfile 경로 는 이미지의 레시피를 사용자 지정하는 데 사용할 수 있습니다.
지금은 기본 설정을 유지하는 것을 권장합니다. 나중에 섹션에서 더 읽어볼 수 있습니다. Unity.
선택적 Docker 빌드 매개변수 는 Docker에 더 세부적인 지침을 주는 데 사용할 수 있습니다.
지금은 기본 설정을 유지하는 것을 권장합니다. 나중에 Docker 문서에서 더 읽어볼 수 있습니다.
☑️ 구성이 만족스러우면 Docker로 컨테이너화를 클릭하고 프로세스가 끝날 때까지 기다린 뒤 Unity 콘솔에 새 오류가 없는지 확인하세요. 이 단계를 완료하면 로컬 머신에 새 이미지가 나타납니다. Docker Desktop의 Local(기본값) 아래 Images 탭에서 확인하거나, docker CLI에서 다음을 실행해 확인할 수 있습니다. docker images .
✅ 이제 다음 단계로 진행할 수 있습니다.
문제 해결 및 FAQ
/bin/bash: docker: command not found 또는 Packages\com.edgegap.unity-servers-plugin\Editor를 찾을 수 없습니다
먼저, 다음을 완료했는지 확인하세요. 개발자 도구.
Edgegap 계정 인증을 완료했는지 확인하세요. 이메일로 인증 링크를 받았어야 합니다.
Docker Desktop을 업데이트한 후 일부 설정이 초기화되었을 수 있습니다. Docker Desktop 설정 / 고급으로 이동하여 “Docker CLI 도구 설치를 구성하는 방법 선택:”에서 “System (requires password)”를 선택해 보세요.
docker build에는 정확히 1개의 인수가 필요합니다
이미지 태그에 공백 문자(스페이스, 탭)가 포함되지 않았는지 확인하세요. 이미지 태그 값을 다시 입력하면 실수로 그런 문자를 복사하지 않았는지 확인할 수 있습니다.
(HTTP code 400) unexpected - invalid tag format
이는 macOS Docker 버전 4.33의 알려진 문제입니다. 4.32로 되돌리거나 4.35로 업그레이드하는 것을 고려하세요.
ERROR: failed to solve: ubuntu:22.04: failed to resolve source metadata for http://docker.io/library/ubuntu:22.04: failed to authorize: failed to fetch oauth token
중국에 계신가요? Great Firewall 때문에 연결이 끊길 수 있습니다. 명령줄에서 수동으로 다음을 실행해 보세요.
docker pull ubuntu:22.04(Win+R을 눌러 명령줄을 열고 그다음 다음을 입력하세요cmd그리고 Enter).
System.IndexOutOfRangeException: 배열의 범위를 벗어난 인덱스입니다.
ZIP을 다운로드하여 Unity 빠른 시작 플러그인을 설치했다면 Unity Editor 캐시가 손상되었을 수 있습니다. 플러그인 복사본을 삭제하고 git URL 또는 Unity Asset Store를 통해 다시 설치해 보세요. 이제 Newtonsoft.JSON 패키지는 다른 소스와 함께 자동으로 포함되므로 더 이상 필요하지 않아야 합니다.
내 Docker 이미지 크기가 매우 큽니다(1GB 초과) / 너무 작습니다(100mb 미만). 괜찮은가요?
이 문서 어디에도 언급되지 않은 다른 문제가 발생하고 있습니다.
먼저 다음을 시도해 주세요. Edgegap 플러그인 업데이트 를 해 보세요. 수정 사항이 포함되었을 수 있습니다. 그래도 해결되지 않으면 우리의 커뮤니티 디스코드 에서 연락해 주시면 신속히 함께 조사하겠습니다.
🧪 4. 로컬에서 서버 테스트
☑️ 다음 옵션을 구성할 수 있습니다(또는 기본값 유지):
서버 이미지 태그 를 이전 단계에서.
플러그인으로 마지막으로 빌드한 태그를 기본값으로 사용합니다.
선택적 Docker 실행 매개변수 는 여러 포트를 노출하거나 macOS 머신에서 이미지를 실행할 때 사용할 수 있습니다.
필요한 경우 컨테이너에 여러 포트를 게시할 수 있으며, 매개변수
-p {internal port}/{protocol}을 각 포트마다 추가하면 됩니다. 예를 들어-p 8080/tcp -p 7770/udp를 사용하여 서버 포트를 게시하고 매핑하여8080TCP 연결용 임의의 외부 포트와 서버 포트7777를 UDP 연결용 임의의 외부 포트에 동시에 연결할 수 있습니다.Transport 또는 netcode 전용 설정에서 서버 포트 구성을 찾으세요.
ARM 아키텍처 머신(macOS M1, M2, M3 등)을 사용 중이라면 선택적 Docker 빌드 매개변수에 다음 옵션이 포함되어 있는 것을 볼 수 있어야 합니다:
--platform=linux/amd64.
☑️ 구성이 만족스러우면 로컬 컨테이너 배포를 클릭하고 프로세스가 끝날 때까지 기다린 뒤 Unity 콘솔에 새 오류가 없는지 확인하세요. 이 단계를 완료하면 새 컨테이너가 시작됩니다 개발 머신에서.
자세한 내용은 Docker Desktop / Containers 또는 Docker CLI 명령을 참조하세요. docker ps .
☑️ 이제 다음 단계입니다. Unity Editor 게임 클라이언트를 로컬 Docker 컨테이너에 연결하여 서버 이미지가 제대로 작동하는지 확인하세요. netcode 클라이언트 설정을 찾아 다음을 입력합니다:
localhost또는127.0.0.1(대부분의 경우 동일) 을 서버 IP 대신 사용하고,Docker Desktop / Containers / edgegap-server-test에서 확인되는 무작위 외부 포트 값.
✅ 이제 다음 단계로 진행할 수 있습니다.
문제 해결 및 FAQ
Unity Editor 게임 클라이언트를 사용해 로컬 Docker 컨테이너에 연결할 수 없습니다.
먼저 컨테이너 상태가 Up인지, Restarting 또는 Exited가 아닌지 확인하세요. 이는 런타임 예외를 의미합니다. 컨테이너가 실행 중이 아니라면 Docker Desktop의 Containers 탭(컨테이너를 클릭) 또는 다음을 사용해 로그를 확인하세요.
docker logs {container_id} --timestamps를 docker CLI에서 실행하세요.다음으로 서버 빌드의 Network Manager 포트 설정이 선택적 Docker 실행 매개변수에 게시된 포트와 일치하는지 확인하세요. 일치하지 않으면 이 입력 필드의 값을 재설정하거나 수동으로 변경하여
{container}포트를 Network Manager 설정과 맞추세요. netcode 설정에서 프로토콜을 찾으세요.마지막으로 Unity Editor 게임 클라이언트 netcode 설정이 선택적 Docker 실행 매개변수 에 게시된 포트를 사용하고 있는지 확인하세요(위 스크린샷 참조).
(Segmentation fault) - core dumped
ARM 아키텍처 머신(macOS M1, M2, M3 등)을 사용 중이라면 선택적 Docker 빌드 매개변수에 다음 옵션이 포함되어 있는 것을 볼 수 있어야 합니다:
--platform=linux/amd64. 일치하지 않으면 이 입력 필드의 값을 재설정해 보세요.
SceneObjects에서 9120233082191360994의 SceneId를 찾을 수 없습니다.
이는 로드하려는 씬이 빌드에 올바르게 포함되지 않았음을 의미할 수 있습니다. 이는 이전 플러그인 버전에서 알려진 문제입니다. 해결하려면 netcode 통합 버전을 업데이트하거나 Edgegap 플러그인 업데이트.
http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed
이는 Windows용 Docker Desktop의 이전 버전에서 알려진 문제. Docker Desktop 애플리케이션을 업데이트하고 다시 컨테이너화해 보세요.
Curl error 35: Cert handshake failed. Fatal error. UnityTls error code: 7
이 오류는 루트 SSL 인증서 검증 문제를 나타내며, 이전 플러그인 버전에서 알려진 문제입니다. 해결하려면 다음을 시도해 보세요. Edgegap 플러그인 업데이트.
☁️ 5. Edgegap에 업로드
☑️ 다음 옵션을 구성할 수 있습니다(또는 기본값 유지):
애플리케이션 이름 은 Edgegap에서 이미지 이름과 같을 수도 있고 사용자 지정할 수도 있습니다.
우선은 이미지 이름을 복사하도록 선택했습니다.
애플리케이션 버전 은 Edgegap에서 태그와 같을 수도 있고 사용자 지정할 수도 있습니다.
타임스탬프는 앱 버전 이름으로 아주 좋습니다. 예:
2024.01.30-16.50.20-UTC.여러 애플리케이션 버전이 같은 이미지 태그를 가리킬 수 있습니다. 예:
v1.1.0및dev.다음에서 더 알아보기 앱 및 버전 나중에.
서버 이미지 이름 단계에서 Unity.
서버 이미지 태그 단계에서 Unity.
에 저장된 이미지 이름과 태그를 머신에서 찾아보세요. Docker Desktop / Images.
☑️ 구성이 만족스러우면 이미지 업로드 및 앱 버전 생성를 클릭하고 프로세스가 끝날 때까지 기다린 뒤 Unity 콘솔에 새 오류가 없는지 확인하세요.
☑️ 다음으로 이동합니다. 대시보드에서 선택적 설정을 구성할 수 있습니다. 이 단계를 완료하면 새 애플리케이션 버전이 생성되고또한 빌드 산출물에 태그가 지정되어 Edgegap의 컨테이너 레지스트리에 업로드됩니다.
☑️ 이제 새 애플리케이션 버전에 사용할 포트를 정의하라는 안내가 표시됩니다. 단계 Unity 에서 Transport 또는 netcode 전용 설정과 동일한 서버 포트 값을 설정하세요.
✅ 이제 다음 단계로 진행할 수 있습니다.
🚀 6. 클라우드에 배포
☑️ 이제 최종 테스트를 수행하고 Unity Editor 게임 클라이언트를 클라우드 배포에 연결합니다. 배포의 다음 항목에서 게임 클라이언트 연결 정보를 입력하세요:
Host URL 서버 IP를 가리키는 값으로, 보통
NetworkManager컴포넌트에 있습니다.외부 포트 다음에 매핑되는 서버의 내부 리스닝 포트이며, 보통 Transport 컴포넌트에 있습니다.
문제 해결 및 FAQ
클라이언트를 서버에 연결할 수 없음 - 요청 시간이 초과되었습니다. , 요청 시간이 초과되었습니다 , ConnectionFailed 또는 포트 검증 실패
먼저 배포 상태가 Ready인지, 배포 로그에 런타임 예외나 오류가 없는지 확인하세요. 배포가 중지되었다면 우리의 로그에서 확인하세요. 대시보드.
Mirror netcode를 사용 중이라면 “Auto Start Server” 가
NetworkManager에서 선택되어 있어야 합니다. 서버를 다시 빌드하고, 업로드하고, 재배포하세요.FishNet netcode를 사용 중이라면 “Start on Headless” 를
ServerManager에서 선택되어 있어야 합니다. 서버를 다시 빌드하고, 업로드하고, 재배포하세요.Photon Fusion 2 netcode를 사용 중이라면 서버가 배포의 공개 IP, 외부 포트 및
roomCode를 서버에 전달하고, 클라이언트에서도 동일한 room code를 “NeworkRunner.StartGame” 매개변수StartGameArgs. 배포 ID(예:b63e6003b19f)는 전역적으로 고유하고 클라이언트가 Matchmaker 및 심층 살펴보기.를 통해 쉽게 접근할 수 있어 좋은 선택입니다. 다음으로 서버 빌드의 netcode 설정에 있는 포트 설정이앱 버전 다음으로 서버 빌드의 netcode 설정에 있는 포트 설정이 의 내부 포트와 일치하는지 확인하세요. 포트 매핑은 다시 빌드하지 않고도
게임 클라이언트가 외부 포트 에 연결하도록 해야 합니다. 이 값은 보안상의 이유로 항상 무작위로 지정됩니다.
netcode 통합에서 Secure Websocket(WSS) 프로토콜을 사용 중이라면 다음으로 서버 빌드의 netcode 설정에 있는 포트 설정이 WSS 포트의 포트 구성에서 TLS Upgrade가 활성화되어 있는지 확인하세요.
중국에 있으며 Smart Fleets를 사용 중이신가요? Great Firewall이 연결을 차단할 수 있습니다. 중국에 있는 서버를 플릿에 추가하거나 VPN을 사용해 연결하는 것을 고려하세요.
배포가 중지/재시작되었고 더 이상 로그에 접근할 수 없습니다.
예외로 인해 서버 프로세스가 충돌하면 시스템이 서버를 자동으로 재시작하려고 시도합니다. 서버를 로컬에서 테스트해 근본 원인을 찾아보세요.
로그는 배포가 유지되는 동안에만 보관됩니다. 배포가 중지된 뒤 로그를 확인하려면 서드파티 로그 저장소를 통합하세요.
다음을 참조하세요. 배포 배포가 중지되는 모든 원인을 알아보세요.
내 배포가 X분 후 자동으로 중지되었습니다.
무료 요금제 배포는 60분 제한이 있습니다. 계정을 업그레이드하는 것을 고려해 주세요.
다음을 참조하세요. 배포 배포가 중지되는 모든 원인을 알아보세요.
와 함께 사용해 보세요.
내 배포는 Ready 상태이지만 그 이후에도 몇 분 동안 연결할 수 없습니다.
배포가 Ready가 되면 게임 엔진 초기화가 시작됩니다. 이 과정은 수초에서 수분까지 걸릴 수 있으며, 그 동안 서버는 플레이어 연결을 받지 않습니다.
이 시간을 줄이기 위해 서버 초기화를 최적화하는 것을 고려하세요.
클라이언트와 서버가 동시에 초기화(언리얼 엔진의 경우 이동 포함)하면서 상태를 동기화할 수 있도록 로딩 씬을 추가하는 것을 고려하세요.
내 Meta Quest 기기에서 다음 오류가 발생합니다. HTTP 0: 대상 호스트를 확인할 수 없습니다 .
Unity 앱을 Android 대상으로 빌드할 때, Internet Access 권한이 출력 APK 클라이언트 빌드 산출물에서 자동으로 제거될 수 있습니다.
권한을 다시 추가하세요(이후 클라이언트를 다시 빌드해야 합니다):
Project Settings / OpenXR / ⚙️ Meta Quest Support / Force Remove Internet Permissions(체크 해제).
Player Settings / Internet Access(필수로 설정).
플레이어가 내 배포를 떠나면 어떻게 되나요?
기본적으로 서버는 플레이어 연결을 거부하지 않습니다. 플레이어 인증은 개발자 몫입니다. 다양한 방법과 플레이어 인증 제공업체를 사용할 수 있기 때문입니다.
게임 클라이언트는 예기치 않은 클라이언트 충돌 시 재연결을 시도하기 위해 연결 정보를 로컬에 저장할 수 있습니다.
내 서버는 Ready 상태가 된 후 CPU 사용률이 100%로 표시됩니다.
게임 엔진은 서버 초기화 중 CPU 집약적인 작업을 수행하는 경향이 있으므로 이는 문제가 아닐 수 있습니다. 배포 시작 후 2~3분이 지나도 CPU 사용량이 떨어지지 않으면 서버를 최적화하거나 앱 버전 리소스를 늘려야 할 수 있습니다.
틱 속도를 낮추면 서버가 수행하는 메시징 작업이 줄어들어 CPU 사용량에 영향을 줄 수 있습니다.
Mirror netcode를 사용 중이라면 “Auto Start Server” 가
NetworkManager에서 선택되어 있어야 합니다. 서버를 다시 빌드하고, 업로드하고, 재배포하세요.FishNet netcode를 사용 중이라면 “Start on Headless” 를
ServerManager에서 선택되어 있어야 합니다. 서버를 다시 빌드하고, 업로드하고, 재배포하세요.무료 요금제에서는 1.5 vCPU와 3GB 메모리(RAM)로 제한됩니다.
새 앱 버전을 만들 때 할당된 리소스를 늘릴 수 있습니다. 서버나 이미지를 다시 빌드하지 않고도 대시보드에서 앱 버전을 복제하여 필요에 따라 이 값을 조정할 수 있습니다.
내 배포가 반복적으로 재시작되며 오류가 표시됩니다. OOM kill
할당된 메모리 양을 초과해서 발생합니다. 오브젝트 풀링, 압축, 또는 씬에서 불필요한 오브젝트 제거를 통해 메모리 사용을 최적화하는 것을 고려하세요.
프로젝트가 다음을 포함하는 기본 씬을 로드하고 있는지 확인하세요.
NetworkManager그리고 해당 씬이 Unity의 Build Settings에 포함되어 있는지 확인하세요.무료 요금제에서는 1.5 vCPU와 3GB 메모리(RAM)로 제한됩니다.
새 앱 버전을 만들 때 할당된 리소스를 늘릴 수 있습니다. 서버나 이미지를 다시 빌드하지 않고도 대시보드에서 앱 버전을 복제하여 필요에 따라 이 값을 조정할 수 있습니다.
때때로 서버의 메모리(RAM) 사용량이 높은 값으로 급증하는데, 문제가 되나요?
할당된 앱 버전 메모리 양을 넘지 않는 한 문제되지 않습니다.
할당된 앱 버전 메모리 양을 초과하면
OOM kill가 발생합니다(위 참조).
같은 머신에서 실행 중인 다른 서버가 내 서버 성능에 영향을 주나요?
아니요. 우리 플랫폼은 할당된 리소스가 다른 스튜디오나 공유 인프라의 다른 서버에서 사용되지 않도록 보장합니다. Edgegap에서는 시끄러운 이웃이 없습니다.
👉 다음 단계
배포 중지
다양한 방법을 알아보세요. 배포를 중지하는 매치가 끝나고 플레이어가 떠난 후에.
부드러운 종료를 위해 게임에 자체 중지 API를 구현할 것을 강력히 권장합니다:
Unity 서버는 충돌하거나 메모리가 부족할 경우 자동으로 재시작됩니다.
주입된 변수
주입된 환경 변수에 접근하여 배포 ID, 서버 IP 주소, 서버 위치 등의 유용한 정보를 읽어보세요. 각 배포에는 자동으로 다음이 포함됩니다:
현재 인스턴스가 게임 클라이언트인지 서버인지 확인 Edgegap 변수가 설정되었는지 확인하여
매치메이킹
배포를 수동으로 시작하고 URL과 포트를 붙여넣는 것만으로는 실시간 게임에 충분하지 않습니다.
매치메이킹에 대해 더 알아보기 자동으로, 적시에 배포하기 위해, 플레이어가 온라인이 되었을 때.
서버 빌드 최적화
마지막 빌드 이후 변경된 에셋만 다시 빌드하세요.
다음을 사용하는 것을 고려하세요. Unity의 증분 빌드 빌드 시간을 단축하기 위해.
다음을 사용하는 것을 고려하세요. Unity의 증분 빌드 빌드 시간을 단축하기 위해.
서버 실행에 꼭 필요한 것만 포함하세요.
사용하지 않는 파일을 이미지에 복사하면 이미지가 불필요하게 커지고 업로드 시간이 길어지며 캐시 속도가 느려지고 전체 서버 시작도 느려집니다. Docker 이미지 최적화 제안을 검토하세요.
이미지 크기를 줄이려면 메쉬의 정적 배칭을 비활성화하세요.
이미지 크기를 줄이려면 메쉬를 압축하세요.
버텍스 압축은 이미지 크기에 영향을 주지 않습니다.
리소스의 조건부 지연 로딩을 구현하세요.
다음을 통해 클라이언트 전용 에셋을 제외하세요. 텍스처와 메쉬의 CPU 읽기/쓰기를 비활성화로 설정.
다음을 사용하는 것을 고려하세요. Unity Addressables 를 사용해 클라이언트 빌드의 빌드 및 배포를 다음과 같이 더 빠르게 하세요. 에셋을 적시에 로드하거나, 또는 다음의 존재 여부를 확인하여 서버 빌드에서 일부 에셋 로드를 건너뛰세요. 주입된 변수.
다음을 사용하는 것을 고려하세요. 다단계 Docker 빌드(링크).
대형 서버 종속성을 별도 이미지로 분리하여 다단계 빌드에서 재사용하세요. Docker는 각 레이어를 캐시하고 이전 버전을 단순히 재사용하며, 별도 지시가 없는 한 이 부분은 업로드를 건너뛰므로 대역폭과 업로드 완료까지 기다리는 시간을 절약할 수 있습니다.
Dockerfile 명령 중 하나가 왜 오류를 내는지 잘 모르겠다면 로컬에서 디버깅해 보세요. 문제가 발생하기 직전에 새 스테이지를 만들고(두 번째
FROM명령을 추가),--target을 사용해 빌드 프로세스가 문제의 스테이지에서 멈추도록 지시한 뒤docker exec -it {container} /bin/bash를 사용해 컨테이너 내부의 대화형 터미널로 들어가세요. 이후 기본 이미지의 셸 명령을 사용해 더 조사할 수 있습니다(예:top우분투에서).
서버 이미지 사용자 지정
빌드 크기 최적화, 불필요한 종속성, 더 복잡한 시작 프로세스 때문에 이미지에 대해 더 많은 제어가 필요한 사용자를 위해 자체 Dockerfile 추가도 지원합니다. 다음 단계에서 사용자 지정 Dockerfile 경로를 선택적으로 제공할 수 있습니다. Unity이제 직접 해 볼 수 있는 몇 가지 팁과 모범 사례를 공유하겠습니다.
웹소켓 또는 HTTPS 요청 사용 시 문제가 있나요?
다음 오류가 발생한다면
Curl error 35: Cert handshake failed. Fatal error. UnityTls error code: 7낙담하지 마세요. 이는 만료된 루트 인증 기관 인증서를 포함하는 이전 기본(FROM) 이미지의 알려진 문제입니다. 더 새로운 기본 이미지 버전(예:ubuntu:22.04)으로 업데이트하고update-ca-certificates를 실행하면 해결할 수 있습니다. Dockerfile에 다음을 추가하세요:
벽에 부딪혔나요? 우리는 우리의 커뮤니티 디스코드 에서 기꺼이 도와드립니다.
마지막 업데이트
도움이 되었나요?

