【发布时间】:2020-03-08 11:36:21
【问题描述】:
我在带有 MySQL 数据库的 .net 核心中有一个简单的 Web API 应用程序,它在没有 docker 的情况下也可以在本地工作。我有windows 10 Home edition,不能直接使用docker,必须使用VirtualBox才能使用docker。
应用设置
"DatabaseConfig": {
"Server": "db",
"Port": "3306",
"Database": "CoreApiDatabase",
"User": "root",
"Password": "27101376"
}
配置服务
var server = Configuration["DatabaseConfig:Server"];
var port = Configuration["DatabaseConfig:Port"];
var database = Configuration["DatabaseConfig:Database"];
var user = Configuration["DatabaseConfig:User"];
var password = Configuration["DatabaseConfig:Password"];
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql($"server={server}; userid={user}; pwd={password}; port={port}; database={database}"));
在startup.cs 的Configure 方法中迁移和植入数据库
Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
EXPOSE 80
COPY --from=build-env app/out .
ENTRYPOINT [ "dotnet","CoreApiDatabase.dll" ]
Docker-compose.yml
version: "3"
services:
db:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 27101376
networks:
- default
coreapidatabase:
image: saeedgz98/coreapidatabase
build:
context: .
dockerfile: Dockerfile
links:
- db:db
ports:
- 8001:80
restart: always
最后,在运行命令 docker-compose up 时,我在执行和执行迁移时遇到此错误。
【问题讨论】:
-
您是否尝试将连接字符串中的
database=替换为schema=? -
我还尝试将 .json 中的
"Server": "db"行替换为"Server": "localhost",因为我找不到暗示db指的是正确的服务器的线索。 -
是并得到“System.ArgumentException: Option 'schema' not supported”错误
标签: mysql docker .net-core docker-compose