Докер не ловит env vars - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь запустить 3 контейнера через docker-compose, с postgres, cassandra и моим веб-приложением, у которого есть встроенный сервер Tomcat с некоторыми зависимостями, как ARP / Native. Эти библиотеки находятся в папке с именем "lib" на том же уровне jar.

Я запускаю PoC в Windows 10 (используя контейнеры linux) перед перемещением его на сервер CentOS, если он работает на PoC. Я искал по сети и, кажется, не является изолированной проблемой, но или я не могу найти решение, или показанное решение не работает для меня. Вот мой docker-compose.yml со всеми соответствующими файлами / папками, хранящимися на одном уровне:

version: '3.1' 

services:
fulmar-webapp:
    container_name: "my-webapp"
    image: openjdk:11-jre-slim
    hostname: mywebapp
    volumes:
        - ./lib:/home/lib
        - ./fulmar-1.0.1-SNAPSHOT-exec.jar:/home/mywebapp-1.0.1-SNAPSHOT-exec.jar

    entrypoint:
        - java
        - -jar
        - /home/mywebapp-1.0.1-SNAPSHOT-exec.jar

    environment:
        - LD_LIBRARY_PATH:/home/lib

        - spring.datasource.url=jdbc:postgresql://postgresql:5432/mydb
        - spring.datasource.username=postgres
        - spring.datasource.password=postgres
        - spring.jpa.hibernate.ddlAuto=update

    network_mode: bridge    
    ports:
        - 8443:8443
        - 8080:8080
    links:
        - postgresql 
        - cassandra     

postgresql:

    container_name: "mydb"
    image: postgres:11.1-alpine
    restart: always
    environment:
        POSTGRES_DB: mydb
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: postgres
    volumes:
       - ./startup.sql:/docker-entrypoint-initdb.d/startup.sql 
       - postgresdata:/var/lib/postgresql/data

    ports:
        - 5432:5432
    network_mode: bridge


cassandra:
    container_name: "cassandra"
    image: cassandra
    ports:
        - 9042:9042
    network_mode: bridge

Объемы: postgresdata:

Не уверен, правильно ли отображается папка с библиотеками или фактически не монтируется том. Это именно то окружение окружающей среды, которое мне нужно поместить туда: Environment = LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / путь / к / библиотеки / Библиотека

Два результата, с которыми я столкнулся:

1-Tomcat исключение, потому что он не может найти библиотеки:

[ERROR][org.apache.catalina.util.LifecycleBase#log(175)] Failed to 
initialize component [Connector[org.apache.coyote.http11.Http11AprProtocol- 
8080]] | org.apache.catalina.LifecycleException: The configured protocol 
[org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library 
which is not available

2-WARNING: переменная LD_LIBRARY_PATH не установлена. По умолчанию используется пустая строка.

Спасибо всем заранее

РЕДАКТИРОВАТЬ: просто сообщите, когда я запускаю docker-compose up, и мое приложение выдает это исключение, контейнер больше не доступен, поэтому я не могу выполнить какие-либо команды в нем

1 Ответ

0 голосов
/ 14 июня 2019

У вас неправильный синтаксис, он должен быть таким:

environment:
    - LD_LIBRARY_PATH=/home/lib
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...