在启动项目时遇到错误+ Docker compose

萨哈尔萨

我使用了SpringBoot RestApi微服务和MongoDB。在MongoDB中,我有三个数据库,例如player-db,game-db和score-db。我的服务位于不同的文件夹中,并且为每个文件夹定义了Dockerfile。用于播放器服务的Dockerfile:

    FROM openjdk:8
COPY ./target/demo-0.0.1-SNAPSHOT.jar player.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://db:27017/","-jar","-Djava.rmi.server.hostname=0.0.0.0", "player.jar"]

用于游戏服务的Dockerfile:

    FROM openjdk:8
COPY ./target/demo-0.0.1-SNAPSHOT.jar game.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://db1:27017/","-jar","-Djava.rmi.server.hostname=0.0.0.0", "game.jar"]

和Dockerfile用于评分服务:

 FROM openjdk:8
COPY ./target/demo-0.0.1-SNAPSHOT.jar score.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://db2:27017/","-jar","-Djava.rmi.server.hostname=0.0.0.0", "score.jar"]

我定义了一个docker-compose.yml文件:

    version: "3"
services:
    player-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/player/DockerFile
        restart: always
        ports:
            - 8080:8080
        depends_on:
            - db
    game-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/game/DockerFile
        restart: always
        ports:
            - 8080:8080
        depends_on:
            - db1
    score-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/score/Dockerfile
        restart: always
        ports:
            - 8080:8080
        depends_on:
            - db2 
    db:
        image: mongo
        volumes:
            - mongodata:/data/db
        ports:
            - 27017:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: player-db
    db1:
        image: mongo
        volumes:
            - mongodata:/data/db1
        ports:
            - 27017:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: game-db
    db2:
        image: mongo
        volumes:
            - mongodata:/data/db2
        ports:
            - 27017:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: score-db
volumes:
    mongodata:

实际上,在docker-compose文件中,我尝试为服务定义不同的数据库,但是当我执行docker-compose up时,出现错误 码头工人

错误:

    $ docker-compose up
Starting springmultiplemongoproject_db_1 ...
Starting springmultiplemongoproject_db2_1 ... error
Creating springmultiplemongoproject_db1_1 ...

ERROR: for springmultiplemongoproject_db2_1  Cannot start service db2: driver fa
iled programming external connectivity on endpoint springmultiplemongoproject_db
2_1 (736a5c8f4a485472d7d5c622f29fd892b533794b352cbccc97dae5c54e3ae54f): Bind for
Creating springmultiplemongoproject_db1_1 ... error

ERROR: for springmultiplemongoproject_db1_1  Cannot start service db1: driver fa
Starting springmultiplemongoproject_db_1  ... done
1_1 (e0ea7a6e31f0bec010ccfef67705732904d3fcf0eee55cee8577d464583070ff): Bind for
 0.0.0.0:27017 failed: port is already allocated
Creating springmultiplemongoproject_player-docker_1 ... done

ERROR: for db2  Cannot start service db2: driver failed programming external con
nectivity on endpoint springmultiplemongoproject_db2_1 (736a5c8f4a485472d7d5c622
f29fd892b533794b352cbccc97dae5c54e3ae54f): Bind for 0.0.0.0:27017 failed: port i
s already allocated

ERROR: for db1  Cannot start service db1: driver failed programming external con
nectivity on endpoint springmultiplemongoproject_db1_1 (e0ea7a6e31f0bec010ccfef6
7705732904d3fcf0eee55cee8577d464583070ff): Bind for 0.0.0.0:27017 failed: port i
s already allocated
ERROR: Encountered errors while bringing up the project.

我是Docker的初学者,并且阅读了许多文档,但找不到任何解决方案。

血栓

您要将相同的主机端口绑定到不同的docker服务。您必须为每个服务指定不同的主机端口。指定端口的语法如下:

 ports:
   - "HOST:CONTAINER"

因此,对于该HOST部分,您需要不同的端口号

version: "3"
services:
    player-docker:
...
        ports:
            - 8081:8080
    game-docker:
...
        ports:
            - 8082:8080
    score-docker:
...
        ports:
            - 8083:8080
    db:
...
        ports:
            - 27018:27017
    db1:
...
        ports:
            - 27019:27017
    db2:
...
        ports:
            - 27019:27017
...

或者,如果您想让docker为您分配主机端口号,则可以省略HOST部分,例如

version: "3"
services:
    player-docker:
...
        ports:
            - 8080
    game-docker:
...
        ports:
            - 8080
    score-docker:
...
        ports:
            - 8080
    db:
...
        ports:
            - 27017
    db1:
...
        ports:
            - 27017
    db2:
...
        ports:
            - 27017
...

或者,如果您不想将端口绑定到数据库服务的主机,则可以省略该ports部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

docker-compose up:在启动项目时遇到错误

来自分类Dev

docker-compose phpmyadmin启动

来自分类Dev

Docker-compose启动失败

来自分类Dev

无法启动docker-compose

来自分类Dev

docker-compose phpmyadmin启动

来自分类Dev

Docker-compose启动失败

来自分类Dev

附加终端并启动 docker compose?

来自分类Dev

docker-compose无法启动postgres映像

来自分类Dev

以生产模式在docker(-compose)中启动FusionAuth

来自分类Dev

docker-compose 构建和启动

来自分类Dev

如何重用docker-compose项目?

来自分类Dev

使用docker-compose项目安装npm

来自分类Dev

卓:用于Docker Compose项目的CodeDeploy?

来自分类Dev

在 Centos 上启动 docker-compose 命令时出错

来自分类Dev

docker-compose服务版本错误

来自分类Dev

Docker Compose中的无效类型错误

来自分类Dev

docker-compose错误-无法读取文件

来自分类Dev

.net core-docker compose的构建错误

来自分类Dev

以下yaml文件中的docker compose错误?

来自分类Dev

docker-compose服务版本错误

来自分类Dev

Docker-compose抛出错误

来自分类Dev

在错误的目录中寻找docker-compose

来自分类Dev

基于 Docker Compose 的 Gitlab CI - 管道错误

来自分类Dev

运行“ docker-compose up时出错

来自分类Dev

在Docker容器中启动项目时找不到io.jsonwebtoken.impl.DefaultJwtBuilder

来自分类Dev

无法从docker-compose启动postgres docker容器

来自分类Dev

多个 docker compose 项目中的 Docker 共享容器

来自分类Dev

运行捆绑软件时出现docker-compose错误

来自分类Dev

关于docker-compose时docker容器的退出