亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Docker 中連接 Spring Boot 和 MongoDB

在 Docker 中連接 Spring Boot 和 MongoDB

慕蓋茨4494581 2023-10-19 21:30:56
我正在嘗試在 docker-compose.yml 中連接 MongoDb 和 Spring Boot。就是這個 -version: "3.7"services:  app-server:    container_name: spring    build: .    ports:      - "8080:8080"    restart: always    depends_on:      - db  db:    container_name: mongo    image: mongo    ports:      - "27017:27017"    restart: always    volumes:      - ./datadir:/var/lib/mongo我的 Spring DockerfileFROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]用于構建 JAR_FILE 的 POM.xml 插件 -            <plugin>                <groupId>com.spotify</groupId>                <artifactId>dockerfile-maven-plugin</artifactId>                <version>1.3.6</version>                <executions>                    <execution>                        <id>build-image</id>                        <phase>package</phase>                        <goals>                            <goal>build</goal>                        </goals>                    </execution>                </executions>                <configuration>                    <repository>maximko/${project.artifactId}</repository>                    <buildArgs>                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>                    </buildArgs>                </configuration>            </plugin>application.properties 文件spring.data.mongodb.host=dbspring.data.mongodb.port=27017spring.data.mongodb.database=HotelDB我的問題1)所有這些問題是否都來自“application.properties”文件,或者我在 docker-compose 文件中錯誤配置了某些內容?2)我可以以某種方式更改我的mongoDB的主機名嗎?3)在運行“docker-compose.yml”之前,我是否需要運行“mvn package”來構建我的App.jar文件?謝謝您的幫助!
查看完整描述

2 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

終于...我解決了我的問題。這是我的改變:


1)我從pom.xml中刪除了這個插件


        <plugin>

            <groupId>com.spotify</groupId>

            <artifactId>dockerfile-maven-plugin</artifactId>

            <version>1.3.6</version>

            <executions>

                <execution>

                    <id>build-image</id>

                    <phase>package</phase>

                    <goals>

                        <goal>build</goal>

                    </goals>

                </execution>

            </executions>

            <configuration>

                <repository>maximko/${project.artifactId}</repository>

                <buildArgs>

                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>

                </buildArgs>

            </configuration>

        </plugin>

并在 Dockerfile 中替換此代碼。在 ENTRYPOINT 中,我將 mongodb 連接 uri 添加到我的數據庫服務(這是主要更改!)


FROM openjdk:8-jdk-alpine

VOLUME /tmp

COPY target/spring-mongo-demo-0.0.1-SNAPSHOT.jar app.jar

RUN sh -c "touch /app.jar"

ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://db:27017/HotelDB","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

為了構建我的 app.jar 我使用了mavem package,但是如果沒有生成你的 jar 文件,你應該使用mavem install


另外,在 application.properties 文件中,我指示spring.data.mongodb.host=db并捕獲以下錯誤


Caused by: java.net.UnknownHostException: db

為了避免在構建 JAR 文件時出現此異常,我改為編寫spring.data.mongodb.host=localhost


查看完整回答
反對 回復 2023-10-19
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

在 docker compose 文件中 -對 docker 容器使用舊版容器鏈接或用戶定義的橋接網絡。



查看完整回答
反對 回復 2023-10-19
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號