我正在尝试使用Visual设置一个ASP.NET项目(基于这教程),并且需要为web应用程序和Server数据库运行Docker容器。
使用下面的docker-compose.yaml,两个容器成功运行,我可以在http://localhost:5000上加载web应用程序登陆页面
version: '3.4'
services:
razorpagesmovie:
image: ${DOCKER_REGISTRY-}razorpagesmovie
build:
context: .
dockerfile: RazorPagesMovie/Dockerfile
ports:
- "5000:5000"
depends_on:
- mssql
mssql:
image: microsoft/mssql-server-linux
ports:
- "1433:1433"
environment:
SA_PASSWORD: "L0ngpassword"
ACCEPT_EULA: "Y"appsettings.json中的连接字符串是
Server=<host>,1433;Database=Movies;User=sa;Password=L0ngpassword;但是,我不知道主机名使用什么值:
dotnet ef database ...调用都可以连接到数据库,直到我的IP更改为止。localhost,那么只有在本地shell上执行的dotnet ef database ...命令才能连接到数据库。mssql,那么只有web应用程序容器才能连接到数据库。有比硬编码我的IP更健壮的方法吗?
发布于 2019-06-27 06:34:29
假设您的appsettings.json文件具有json键ConnectionString。
可以将连接字符串的环境变量添加到该容器中。使用DB_IP或放置DB容器的服务名称mssql。
version: '3.4'
services:
razorpagesmovie:
image: ${DOCKER_REGISTRY-}razorpagesmovie
build:
context: .
dockerfile: RazorPagesMovie/Dockerfile
ports:
- "5000:5000"
environment:
- ConnectionString=${DB_IP:-Server=mssql;Database=Movies;User=sa;Password=L0ngpassword}
depends_on:
- mssql
mssql:
image: microsoft/mssql-server-linux
ports:
- "1433:1433"
environment:
SA_PASSWORD: "L0ngpassword"
ACCEPT_EULA: "Y"https://stackoverflow.com/questions/56783193
复制相似问题