gpt4 book ai didi

docker - 本地多个数据库

转载 作者:行者123 更新时间:2023-12-02 20:48:32 25 4
gpt4 key购买 nike

我有 2 个应用程序是独立的代码库,它们每个在同一个数据库服务器实例上都有自己的数据库。

我正在尝试在我的笔记本电脑本地的 docker 中复制它。我希望能够让两个应用程序使用相同的数据库实例。

我想

  • 两个应用程序同时在 docker 中启动
  • 两个应用程序都能够访问 localhost
  • 上的数据库
  • 数据库数据被持久化
  • 能够使用本地主机上的 IDE 查看数据库中的数据

  • 所以我的每个应用程序都有自己的 dockerfiledocker-compose文件。

    在 app1 上,我启动了与数据库绑定(bind)的应用程序的 docker 实例。一切开始都很好。

    当我尝试启动 app2 时,出现以下错误:
    ERROR: for app2_mssql_1  Cannot start service mssql: driver failed programming external connectivity on endpoint app2_mssql_1 (12d550c8f032ccdbe67e02445a0b87bff2b2306d03da1d14ad5369472a200620): Bind for 0.0.0.0:1433 failed: port is already allocated

    我怎样才能让它们同时运行?两个应用程序都需要能够访问彼此的数据库表!

    这是 docker-compose.yml 文件

    应用程序1:
    version: "3"
    services:
    web:
    build:
    context: .
    args:
    volumes:
    - .:/app
    ports:
    - "3000:3000"
    depends_on:
    - mssql
    mssql:
    image: 'microsoft/mssql-server-linux'
    ports:
    - '1433:1433'
    environment:
    - ACCEPT_EULA=Y
    - SA_PASSWORD=P455w0rd!
    volumes:
    - app1_db:/var/lib/mssql/data
    volumes:
    app1_db:

    这是app2:
    version: "3"
    services:
    web:
    build:
    context: .
    args:
    volumes:
    - .:/app
    ports:
    - "3000:3000"
    depends_on:
    - mssql
    mssql:
    image: 'microsoft/mssql-server-linux'
    ports:
    - '1433:1433'
    environment:
    - ACCEPT_EULA=Y
    - SA_PASSWORD=P455w0rd!
    volumes:
    - app2_db:/var/lib/mssql/data
    volumes:
    app2_db:

    我应该在每个 docker-compose 文件中使用相同的卷吗?
    我想问题出在每个应用程序中,我正在启动 2 个不同的数据库实例,而实际上我想我只想要一个,并且它被我所有的应用程序使用?

    最佳答案

    ports docker-compose 文件中的一部分会将容器端口绑定(bind)到主机的端口,这会在您的情况下导致端口冲突。

    您需要删除 ports来自至少一个撰写文件的一部分。这样, docker-compose 可以同时满足两者。您可以同时访问这两个应用程序。但请记住,这两个应用程序将被放置在单独的网桥中。

    关于docker - 本地多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850495/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com