Ubuntu 20.04 LTSのdocker-composeでASP.NET Coreを動かす

Ubuntu 20.04 LTS
.NET Core 5.0
でdocker-composeするまでの覚え書き。

Visual StudioでDockerfileは作らない方針で、ビルドした実行資産を格納して、docker-composeで実行する。

■ 手順

  1. ディレクトリを作成して移動する。(場所はお好みでOK)
mkdir myapp

cd myapp
  1. appフォルダを作成し実行資産を格納する。
app
├wwwroot
├appsettings.json
...
└Myapp.dll
  1. docker-compose.ymlを作成する。
vi docker-compose.yml
version: '3.5'

services:
  myapp:
    image: mcr.microsoft.com/dotnet/aspnet:5.0
    container_name: myapp
    restart: always
    ports:
      - "5010:80"
    environment:
      TZ: "Asia/Tokyo"
      ASPNETCORE_CONTENTROOT: "/app"
      ASPNETCORE_ENVIRONMENT: "Production" # "Production" or "Development"
      Database__db: "server=myappdb;port=3306;database=myapp;user id=myapp;password=insecure;sslmode=none;"
    volumes:
      - "./app:/app"
      - "./font:/usr/share/fonts/opentype/myapp"
    entrypoint: ["dotnet", "/app/Myapp.dll"]

  mariadb:
    image: mariadb:10.5
    container_name: myappdb
    restart: unless-stopped
    ports:
      - "5011:3306"
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - "./database:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: please_change
      MYSQL_DATABASE: myapp
      MYSQL_USER: myapp
      MYSQL_PASSWORD: insecure

設定値補足

  • TZ: “Asia/Tokyo”
    タイムゾーン指定する場合。
  • Database__db: “server=myappdb;port=3306;database=myapp;user id=myapp;password=insecure;sslmode=none;”
    appsettings.jsonの設定値を上書きすることができる。
    下記のような設定を「__」で連結した値を使う。
{
  "Database": {
    "db": ""
  }
}
  • – “./font:/usr/share/fonts/opentype/myapp”
    特定のフォントを使用する場合。appフォルダと同じ階層にfontフォルダを作成してフォントファイルを置いておく。
  1. 起動する。
docker-compose up -d

ホスト名+ポート5010でWEBサイトに接続できる。
またmariadbはホスト名+ポート5011で接続できる。

これでフロントにHaproxyやNginxを置いてやることで、サーバー公開できる。