Невозможно запустить Tomcat с docker -композицией - PullRequest
0 голосов
/ 12 февраля 2020

Я не могу запустить сервер Tomcat из docker compose.

Когда я вхожу в контейнер, используя docker exec -it <container id> bash и вижу ps -eaf | grep "tomcat", он отображается пустым. Сервер Tomcat не работает.

docker-compose.yml файл:

version: "3"
services:

  meghcore:  
    build: ./Core
    container_name: 'meghcore'
    expose:
      - '8080'
    ports:
      - '8080:8080'
    volumes:
      - meghcore:/opt/Tomcat1/webapps/

    command: /bin/bash
    tty: true
    stdin_open: true
    networks:
      - meghnet
volumes:  
  meghcore:
networks: 
  meghnet:
    driver: bridge

Dockerfile файл:

FROM tomcat:8.5.35
WORKDIR /app
COPY . /app
RUN mv /app/*.war /opt/Tomcat1/webapps/
ENV PATH $PATH:/opt/Tomcat1/bin
WORKDIR /opt/Tomcat1/bin
EXPOSE 8080
CMD ["catalina.sh", "run"]

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

Происходит команда, указанная в docker -compose.yml перезаписывает CMD, предоставленный в dockerfile.
любезно обновите command с помощью команды, доступной в dockerfile или remove command от docker -compose.yml

0 голосов
/ 13 февраля 2020

Проблема решена путем добавления приведенных ниже команд в dockerfile и удаления команды из docker compose file.

ENV PATH $PATH:$JAVA_HOME/bin
ENV PATH $PATH:/opt/Tomcat1/bin
WORKDIR /opt/Tomcat1/bin
EXPOSE 8080
CMD ["catalina.sh", "run"]
0 голосов
/ 12 февраля 2020

Поскольку в файле docker-compose.yml указан альтернативный command:, он переопределяет CMD в Dockerfile. Вам не нужно большинство опций, которые вы там указали, и некоторые из них (альтернативные command:, volumes:, перезаписывающие реальное приложение) мешают нормальной работе контейнера.

Завершено , функциональным docker-compose.yml будет

version: "3"
services:
  meghcore:  
    build: ./Core
    ports:
      - '8080:8080'

. Ни один из перечисленных вами вариантов не требуется. Если бы в файле были перечислены другие контейнеры, они могли бы по-прежнему взаимодействовать, используя свои Docker имена сервисов Compose, без какой-либо специальной настройки (другой контейнер в этом же файле мог бы успешно вызвать http://meghcore:8080).

...