0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker上にASP.NET Core WebAPI環境を構築する(VSCode)その2

Last updated at Posted at 2020-12-27

手順

1.WebAPIの作成

ASP.NET CoreでWebAPIを作成する を参考にして作成。WebAPIの詳細については本記事では割愛。

【作成したWebAPI】
  • Model
AuthorModel.cs

namespace webapisqlsv1.Models{
  public class AuthorModel {
      public int Id { get; set; }
      public string Author { get; set; }
      public string BookTitle { get; set; }
  }
}
AuthorContext.cs

using Microsoft.EntityFrameworkCore;

namespace webapisqlsv1.Models{
  public class AuthorContext:DbContext{
    public AuthorContext(DbContextOptions<AuthorContext> options)
      :base(options){

    }

    public DbSet<AuthorModel> TblAuthor {get; set;}
  }
}

  • Controller
AuthorController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using webapisqlsv1.Models;

namespace webapisqlsv1.Controllers
{
  [ApiController]
  [Route("[controller]")]
  public class AuthorController : ControllerBase
  {

    private readonly ILogger<AuthorController> _logger;
    private readonly AuthorContext _context;

    public AuthorController(ILogger<AuthorController> logger, AuthorContext context)
    {
      _logger = logger;
      _context = context;
    }

    [HttpGet]
    public IEnumerable<AuthorModel> Get()
    {
      return _context.TblAuthor.ToArray();
    }
  }
}

  • Startup.cs
Startup.cs

//追加部分のみ
public void ConfigureServices(IServiceCollection services)
{
   services.AddDbContext<Models.AuthorContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString("AUTHOR01")));
}
  • appsettings.json 追加部分のみ
appsettings.json
  "ConnectionStrings":{
    "AUTHOR01" : "Data Source=db1;Database=Author;User ID=sa;Password=Password0!;"
  }

2.Docker環境の作成

  • DB用のフォルダを作成しDB用のDockerfileを作成
Dockerfile

FROM mcr.microsoft.com/mssql/server:2017-latest

ENV ACCEPT_EULA=Y
ENV MSSQL_SA_PASSWORD=Password0!
ENV MSSQL_PID=Express
ENV MSSQL_COLLATION=Japanese_CI_AS
ENV MSSQL_LOG_DIR=/MSSQL/log
ENV MSSQL_DATA_DIR=/MSSQL/data
ENV MSSQL_BACKUP_DIR=/MSSQL/backup
ENV MSSQL_MASTER_DATA_FILE=/MSSQL/master.mdf
ENV MSSQL_MASTER_LOG_FILE=/MSSQL/mastlog.ldf

EXPOSE 1433

  • docker-compose.ymlを編集

depends_onを追加しDBの設定を追加する

docker-compose.yml

# Please refer https://aka.ms/HTTPSinContainer on how to setup an https developer certificate for your ASP .NET Core service.

version: '3.4'

services:
  webapisqlsv1:
    image: webapisqlsv1
    container_name: apisqlsv1
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 5001:5000
    depends_on: 
      - db
  db:
    image: mssqldb
    container_name: sqlsv1
    hostname: db1
    build: 
      context: ./db/
      dockerfile: Dockerfile
    volumes: 
      - C:\Docker\SQLServer\DB:/MSSQL  
    ports: 
      - 1433:1433

3.コマンド実行&結果

docker-compose up

VSCode_20201227-3.png

VSCode_20201227-2.png
VSCode_20201227-1.png

ソースはこちら

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?