【问题标题】:class path resource cannot be resolved to URL when running docker compose运行 docker compose 时无法将类路径资源解析为 URL
【发布时间】:2021-03-23 13:58:08
【问题描述】:

我正在尝试创建一个 docker-compose.yml,因为我有很多微服务要引导运行。当我通过gradle bootRun一一运行它们时它可以正常工作,但在执行docker-compose up时遇到很多错误

我想使用我的本地 postgres 数据库。

这是我的docker-compose.yml

version: '3'
services:

  redis:
    image: redis:5.0.3-alpine
    ports:
      - '6379:6379'

  rabbitmq:
    image: rabbitmq:3.5.3-management
    ports:
      - "5672:5672"
      - "15672:15672"

  config-server:
    network_mode: host
    container_name: config-server
    image: config-server:1.0.0-SNAPSHOT

  customer-app:
    network_mode: host
    container_name: customer
    image: customer:1.0.0-SNAPSHOT
    environment:
      - 'SPRING_DATASOURCE_URL=jdbc:postgresql://host.docker.internal:5432/demoapp?customer'
    depends_on:
      - config-server
    restart: on-failure

  authentication-app:
    network_mode: host
    container_name: authentication
    image: authentication:1.0.0-SNAPSHOT
    depends_on:
      - config-server
    restart: on-failure

  admin-app:
    network_mode: host
    container_name: admin
    image: admin:1.0.0-SNAPSHOT
    environment:
      - 'SPRING_DATASOURCE_URL=jdbc:postgresql://host.docker.internal:5432/demoapp?admin'
    depends_on:
      - config-server
    restart: on-failure

这是错误(1):

 2021-03-23 13:40:36.772 DEBUG 1 --- [           main] o.a.catalina.core.AprLifecycleListener   : The Apache Tomcat Native library could not be found using names [tcnative-1, libtcnative-1] on the java.library.path [/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]. The errors reported were [Can't load library: /bin/libtcnative-1.so, Can't load library: /bin/liblibtcnative-1.so, no tcnative-1 in java.library.path: [/usr/java/packages/lib, /usr/lib/x86_64-linux-gnu/jni, /lib/x86_64-linux-gnu, /usr/lib/x86_64-linux-gnu, /usr/lib/jni, /lib, /usr/lib], no libtcnative-1 in java.library.path: [/usr/java/packages/lib, /usr/lib/x86_64-linux-gnu/jni, /lib/x86_64-linux-gnu, /usr/lib/x86_64-linux-gnu, /usr/lib/jni, /lib, /usr/lib]]

这是错误(2):

 Caused by: java.io.FileNotFoundException: class path resource [db/changelog/0.0.1-SNAPSHOT//data/sql/1597842399712-changelog.sql] cannot be resolved to URL because it does not exist

这是项目的结构:

admin
  admin-app
    src
      main
        Dockerfile
        java
        resources
          db.changelog
            0.0.1-SNAPSHOT
              data.sql
                1597842399712-changelog.sql
    target
      libs
        admin-app-1.0.0-SNAPSHOT.jar

Dockerfile:

FROM openjdk:11.0.2-jdk-slim
VOLUME /tmp
COPY target/libs/*.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/app.jar"]

【问题讨论】:

  • 问题解决了吗/

标签: spring-boot docker docker-compose liquibase


【解决方案1】:

假设所有其他事情都正常。在你的 Dockerfile 中

FROM openjdk:11.0.2-jdk-slim
VOLUME /tmp
RUN mkdir -p /data/sopie/your-project

COPY target/libs/*.jar /data/sopie/your-project/app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","app.jar"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多