在Docker容器中与PostgreSQL服务器交互

时间:2018-02-15 12:56:07

标签: postgresql docker

我正在根据from rest_framework_swagger.views import get_swagger_view schema_view = get_swagger_view(title='API name') from django.urls import path urlpatterns = [ path('', schema_view) ] urlpatterns += [ # your patterns here ] 图片创建Docker镜像,并尝试与之交互:

postgres

但是,这会导致构建时出现以下错误:

FROM postgres:9.6

USER postgres
RUN createuser foo

如何从此容器中正确连接到PostgreSQL服务器?

1 个答案:

答案 0 :(得分:0)

postgres服务器在it('backStep() should decrement current step', () => { comp.backStep(2); expect(comp.currentStep).toEqual(1); }); it('nextStep() should increment current step', () => { const start = 1; comp.totalSteps = Array.from(Array(4), (_, i) => start + i); comp.nextStep(1); expect(comp.currentStep).toEqual(2); }); it('Should call updateAdmin method and test mock service', () => { const start = 1; comp.totalSteps = Array.from(Array(4), (_, i) => start + i); comp.nextStep(4); //when steps reached to max limit (4) I need to call a mock service which should update a field and return response, here I dont know how to test updateAdmin() method. }); }); 进程中没有运行,因此尝试使用Dockerfile中的docker build语句连接到它不会起作用。

如果要创建用户或数据库或扩展等,则需要在运行时执行此操作。有几个选项可供选择,您选择哪一个取决于您正在尝试做什么。

如果您只需要创建一个与默认值不同的用户和/或数据库,您可以通过the documentation中所述的环境变量来实现。

创建RUN以外的用户:

postgres

创建非默认数据库(与docker run -e POSTGRES_USER=foo -e POSTGRES_PASSWORD=secret [...] postgres 的名称匹配):

POSTGRES_USER

如果您需要执行更复杂的操作,请查看文档中的“如何扩展此图像”部分。您可以将shell脚本或sql脚本放入docker run -e POSTGRES_DB=mydbname [...] postgres ,它们将在容器启动期间执行。这里有一个例子,演示了如何使用这种机制创建一个额外的数据库。