AtlasX Container Migration

AtlasX Container Migration

ในการนำ AtlasX Container มาใช้งานกับ AtlasX Web Service และ AtlasX Web Application นั้น จะต้องมีการเพิ่มเติม code บางส่วนก่อน ถึงจะสามารถใช้งาน container ได้อย่างเต็มรูปแบบ

Note

📣 AtlasX Web Service และ Web Application ตั้งแต่เวอร์ชั่น 4.0.0 ขึ้นไป ได้มีการเพิ่มเติมไฟล์สำหรับการทำ container เรียบร้อยแล้ว

AtlasX Web Service

Add base path

ที่ไฟล์ Startup.cs ให้เพิ่ม code นี้เข้าไปใน method Configure เพื่อที่จะสามารถกำหนด basepath ให้ application ได้ ซึ่งจะส่งผลโดยตรงกับ static file ต่าง ๆ ที่ต้อง serve

string basePath = Environment.GetEnvironmentVariable("ASPNETCORE_BASEPATH");
if (!string.IsNullOrEmpty(basePath))
{
    app.Use(async (context, next) =>
    {
        context.Request.PathBase = basePath;
        await next.Invoke();
    });
}

Add resource file

ดาวน์โหลด Docker Template จากที่นี่ แล้วแตกไฟล์ออกมา จากนั้นทำตามขั้นตอน

  1. คัดลอกไฟล์ nuget.config.template.dockerignoreDockerfile.gitignore  ไปที่ root folder ของ project
  2. แก้ไข image tag ของ .NET ใน Dockerfile โดยต้องตรงกับเวอร์ชั่นของโปรเจกต์ สามารถดูได้ที่ไฟล์ .csproj
Note

🚨 AtlasX Web Service เวอร์ชั่น 3.1.0 ขึ้นไปจะใช้งาน .NET 6 แล้ว

# .NET 5
FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS build

# .NET 6
FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
  1. (Optional) คัดลอกไฟล์ docker-compose.yml.example.env ไปที่ root folder ของ project
Note

⚠️ docker-compose.yml จะใช้สำหรับการ build และ run container บนเครื่องของตัวเอง ซึ่งการตั้งค่าจะแตกต่างกันตามโครงการและความต้องการใช้งาน

AtlasX Web Application

Add resource file

ดาวน์โหลด Docker Template จากที่นี่ แล้วแตกไฟล์ออกมา จากนั้นทำตามขั้นตอน

  1. คัดลอกไฟล์ .dockerignore.npmrc.docker  ไปที่โฟลเดอร์ ClientApp
  2. คัดลอกไฟล์ Dockerfile  ไปที่โฟลเดอร์ ClientApp/docker
  3. แก้ไข image tag ของ node.js ใน Dockerfile โดยสามารถดูได้ที่ Compatiblity Matrix
  4. (Optional) คัดลอกไฟล์ docker-compose.yml.example.env ไปที่ root folder ของ project
Note

⚠️ docker-compose.yml จะใช้สำหรับการ build และ run container บนเครื่องของตัวเอง ซึ่งการตั้งค่าจะแตกต่างกันตามโครงการและความต้องการใช้งาน