如何在 Azure 中映射数据库卷
How to map db volume in azure
我正在尝试使用 azure 容器注册表作为图像源在 azure 中托管一个多容器应用程序(web api+ postgres db)。
这是我正在使用的 docker 撰写文件:
version: '3.4'
services:
dockerapi:
image: test.azurecr.io/pgdemo:1
ports:
- "1985:80"
postgresimage:
image: postgres
ports:
- "5432"
environment:
POSTGRES_USER: "bloguser"
POSTGRES_PASSWORD: "bloguser"
POSTGRES_DB: "blogdb"
volumes:
- $./dbscripts/seed.sql :/docker-entrypoint-initdb.d/seed.sql
- db-data:/var/lib/postgresql/data
volumes:
db-data:
driver: local
我跟着this article开发了这个应用程序,在本地环境中一切顺利。 volumes
部分似乎在 docker-compose 文件中不正确。我尝试用 WEBAPP_STORAGE_HOME
替换 .
,但从 azure conatainer 日志看来,种子脚本仍然被忽略:
Microsoft.EntityFrameworkCore.Database.Command[20102]
2019-06-18T07:00:20.279183157Z Failed executing DbCommand (41ms)
[Parameters=[], CommandType='Text', CommandTimeout='30']
2019-06-18T07:00:20.279189958Z SELECT b.id, b.title,
b.description 2019-06-18T07:00:20.279193958Z FROM blog AS b
2019-06-18T07:00:20.298436041Z WHERE STRPOS(b.title, 'Title') >
0 2019-06-18T07:00:20.298452842Z Npgsql.PostgresException
(0x80004005): 42P01: relation "blog" does not exist
2019-06-18T07:00:20.298457842Z at
Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<g__ReadMessageLong|0>d.MoveNext()
2019-06-18T07:00:20.298462242Z --- End of stack trace from previous
location where exception was thrown --- 2019-06-18T07:00:20.298466242Z
at
Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<g__ReadMessageLong|0>d.MoveNext()
2019-06-18T07:00:20.298478543Z --- End of stack trace from previous
location where exception was thrown --- 2019-06-18T07:00:20.298482943Z
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean
isConsuming) 2019-06-18T07:00:20.298486743Z at
Npgsql.NpgsqlDataReader.NextResult() 2019-06-18T07:00:20.298490643Z
at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior,
Boolean async, CancellationToken cancellationToken)
2019-06-18T07:00:20.298494543Z at
Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
2019-06-18T07:00:20.298498343Z at
System.Data.Common.DbCommand.ExecuteReader()
2019-06-18T07:00:20.298502143Z at
Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection
connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2
parameterValues)
在azure中增加数据量的方式正确吗?
要在Azure中为Web App for Container添加数据卷,您需要像这样在卷中挂载路径:
version: '3.4'
services:
dockerapi:
image: test.azurecr.io/pgdemo:1
ports:
- "1985:80"
postgresimage:
image: postgres
ports:
- "5432"
environment:
POSTGRES_USER: "bloguser"
POSTGRES_PASSWORD: "bloguser"
POSTGRES_DB: "blogdb"
volumes:
- ${WEBAPP_STORAGE_HOME}/dbscripts:/docker-entrypoint-initdb.d
- db-data:/var/lib/postgresql/data
volumes:
db-data:
driver: local
然后设置环境变量WEBSITES_ENABLE_APP_SERVICE_STORAGE
为True
。请记住,它只是添加持久卷。所以需要将文件seed.sql复制到通过FTP/FTPS的路径中。有关详细信息,请参阅 Add persistent storage。
我正在尝试使用 azure 容器注册表作为图像源在 azure 中托管一个多容器应用程序(web api+ postgres db)。
这是我正在使用的 docker 撰写文件:
version: '3.4'
services:
dockerapi:
image: test.azurecr.io/pgdemo:1
ports:
- "1985:80"
postgresimage:
image: postgres
ports:
- "5432"
environment:
POSTGRES_USER: "bloguser"
POSTGRES_PASSWORD: "bloguser"
POSTGRES_DB: "blogdb"
volumes:
- $./dbscripts/seed.sql :/docker-entrypoint-initdb.d/seed.sql
- db-data:/var/lib/postgresql/data
volumes:
db-data:
driver: local
我跟着this article开发了这个应用程序,在本地环境中一切顺利。 volumes
部分似乎在 docker-compose 文件中不正确。我尝试用 WEBAPP_STORAGE_HOME
替换 .
,但从 azure conatainer 日志看来,种子脚本仍然被忽略:
Microsoft.EntityFrameworkCore.Database.Command[20102] 2019-06-18T07:00:20.279183157Z Failed executing DbCommand (41ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] 2019-06-18T07:00:20.279189958Z SELECT b.id, b.title, b.description 2019-06-18T07:00:20.279193958Z FROM blog AS b 2019-06-18T07:00:20.298436041Z WHERE STRPOS(b.title, 'Title') > 0 2019-06-18T07:00:20.298452842Z Npgsql.PostgresException (0x80004005): 42P01: relation "blog" does not exist 2019-06-18T07:00:20.298457842Z at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<g__ReadMessageLong|0>d.MoveNext() 2019-06-18T07:00:20.298462242Z --- End of stack trace from previous location where exception was thrown --- 2019-06-18T07:00:20.298466242Z at Npgsql.NpgsqlConnector.<>c__DisplayClass161_0.<g__ReadMessageLong|0>d.MoveNext() 2019-06-18T07:00:20.298478543Z --- End of stack trace from previous location where exception was thrown --- 2019-06-18T07:00:20.298482943Z at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming) 2019-06-18T07:00:20.298486743Z at Npgsql.NpgsqlDataReader.NextResult() 2019-06-18T07:00:20.298490643Z
at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) 2019-06-18T07:00:20.298494543Z at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 2019-06-18T07:00:20.298498343Z at System.Data.Common.DbCommand.ExecuteReader() 2019-06-18T07:00:20.298502143Z at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
在azure中增加数据量的方式正确吗?
要在Azure中为Web App for Container添加数据卷,您需要像这样在卷中挂载路径:
version: '3.4'
services:
dockerapi:
image: test.azurecr.io/pgdemo:1
ports:
- "1985:80"
postgresimage:
image: postgres
ports:
- "5432"
environment:
POSTGRES_USER: "bloguser"
POSTGRES_PASSWORD: "bloguser"
POSTGRES_DB: "blogdb"
volumes:
- ${WEBAPP_STORAGE_HOME}/dbscripts:/docker-entrypoint-initdb.d
- db-data:/var/lib/postgresql/data
volumes:
db-data:
driver: local
然后设置环境变量WEBSITES_ENABLE_APP_SERVICE_STORAGE
为True
。请记住,它只是添加持久卷。所以需要将文件seed.sql复制到通过FTP/FTPS的路径中。有关详细信息,请参阅 Add persistent storage。