如何在Azure中映射数据库卷

时间:2019-06-18 07:04:34

标签: postgresql azure docker docker-compose azure-container-registry

我正在尝试使用azure容器注册表作为图像源在azure中托管多容器应用(web api + postgres db)。

这是我正在使用的docker compose文件:

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,但仍然看不到种子脚本,从蔚蓝的容器日志看来:

  

Microsoft.EntityFrameworkCore.Database.Command [20102]   2019-06-18T07:00:20.279183157Z执行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来自博客AS b   2019-06-18T07:00:20.298436041Z WHERE STRPOS(b.title,'Title')>   0 2019-06-18T07:00:20.298452842Z Npgsql.PostgresException   (0x80004005):42P01:关系“博客”不存在   2019-06-18T07:00:20.298457842Z在   Npgsql.NpgsqlConnector。<> c__DisplayClass161_0。 d.MoveNext()   2019-06-18T07:00:20.298462242Z-前一个堆栈跟踪结束   引发异常的位置--- 2019-06-18T07:00:20.298466242Z   在   Npgsql.NpgsqlConnector。<> c__DisplayClass161_0。 d.MoveNext()   2019-06-18T07:00:20.298478543Z ---上一个的堆栈跟踪结束   引发异常的位置--- 2019-06-18T07:00:20.298482943Z   在Npgsql.NpgsqlDataReader.NextResult(布尔异步,布尔   isConsuming)2019-06-18T07:00:20.298486743Z在   Npgsql.NpgsqlDataReader.NextResult()2019-06-18T07:00:20.298490643Z
  在Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior行为,   布尔异步,CancellationToken取消(Token)   2019-06-18T07:00:20.298494543Z在   Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior行为)   2019-06-18T07:00:20.298498343Z在   System.Data.Common.DbCommand.ExecuteReader()   2019-06-18T07:00:20.298502143Z在   Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection   连接,DbCommandMethod executeMethod,IReadOnlyDictionary`2   parameterValues)

以天蓝色添加数据量是否正确?

1 个答案:

答案 0 :(得分:1)

要为Azure中的容器的Web应用程序添加数据量,您需要像这样在卷中安装路径:

ERROR: transport error 202: bind failed: Permission denied
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:741]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)

然后将环境变量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。记住,它只是增加了持久性。因此,您需要将文件seed.sql复制到通过FTP / FTPS的路径。有关更多详细信息,请参见Add persistent storage