当前位置: 首页 > 知识库问答 >
问题:

如何在数字海洋上使用postgresql和spring boot应用程序

胡景澄
2023-03-14

我安装了一个postgres docker容器和Spring启动应用程序作为另一个docker容器。但是Spring Boot应用程序无法连接到数据库。

这是我的数据库连接代码:

# name is used in quartz scheduling initial table creation in db
spring.datasource.name = postgresql
# postgresql, mysql, all, h2 etc, default is all
# spring.datasource.platform = postgresql
spring.datasource.url = jdbc:postgresql://<public_ip_address>:5432/production_db
spring.datasource.username = postgres
spring.datasource.password = 1234

请注意,数字海洋也有私人IP地址。我也试过。即使有localhost和127.0.0.1

我运行postgres如下:

docker run -d --rm -p 5432:5432 --name pg-docker -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=1234 -v $HOME/docker/volumes/postgres/:/var/lib/postgresql/data postgres:11.0
psql -U postgres -h localhost -c "CREATE DATABASE production_db"

我的Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY build/libs/*.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/app.jar"]

以下是docker-compose.yml文件。

version: '3'
services:
  postgresql:
    image: "postgres:11.0"
    container_name: "postgresql"
    ports:
      - "5432:5432"
    volumes:
      - $HOME/docker/volumes/postgres/:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=1234

  api:
    build: .
    container_name: "api"
    ports:
      - "8081:8081"
    depends_on:
      - postgresql

当我尝试docker-compose up--build时,它也显示连接错误。数据源行:spring.datasource.url=jdbc: postgresql://postgresql: 5432/production_db

共有2个答案

步嘉德
2023-03-14

docker命令中使用EXPOSE 5432来运行Postgres容器。默认情况下它不会公开端口。

姬锐
2023-03-14

请使用docker compose部署应用程序和数据库,然后使用docker compose服务名称而不是public\u ip\u地址。

类似地,我在这个示例应用程序中使用了mysql:https://github.com/jinternals/micrometer

  datasource:
    url: jdbc:mysql://mysql:3306/micrometer
    username: user
    password: password
 类似资料:
  • 我在Digital Ocean上安装了一个基于Ubuntu的droplet,安装了Docker,并在那里上传了我的Docker图像。我桌面上的tar文件。我上传了这张图片。tar文件进入/home/newuser/app目录。接下来,我加载了图像。使用以下命令进行tar: 图像已加载。我查过了。 当我运行以下行时,我看不到我的图像应用程序在公共IP上连接到我的水滴实例: 或 你们是怎么处理这件事的

  • 我遵循这个指南,在Ubuntu(LAMP stack)上为Digital Ocean设置Laravel 5.1。当我尝试通过单击鼠标访问我的Laravel应用程序时,我得到: 我先安装Composer,然后安装Laravel,然后安装目录在我的路径中“这样您的系统就可以找到laravel可执行文件。” : 然后按照这个指南改变我的webroot,这样我就可以像Laravel期望的那样从提供服务:

  • 我在nginx代理的Digital Ocean Droplet中有几个项目,我想用pm2开始所有的项目,我看到我可以用一个带有名称和脚本的。json文件来实现这一点,但它似乎不起作用,这是我所做的: 我的droplet目录和项目: 项目1 项目2 pm2-apps.json pm2-apps.json 然后我跑 但是当我输入url时,项目似乎没有正确安装,如果我在项目文件夹中的中分开运行每个项目,

  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 海洋是3D地球表面表示海洋的特定区域,在Gio地球表面,海洋是最暗的区域。海洋的默认亮度是0.5。 可以通过 configure() API来设置海洋的亮度,具体设置方式如下所示: controller.configure({         brightness: {                 ocean:0.8         } }); 也可以通过 adjustOceanBrightn

  • 我使用Realm对象服务器运行在数字海洋的最低选项(5美元/月)在Ubuntu服务器上。我一直收到连接拒绝错误;我不知道错误是来自DO还是ROS。 我不是Ubuntu方面的专家;因此,我进入并清除了/var/log中的所有日志,并尝试重新连接。当有大量记录需要同步时,我不断收到以下错误(在iOS上,客户端): 在ubuntu端,清除所有日志后,当我尝试连接到服务器时,会再次创建一个日志,,以下是内