tomcat + mysql + war с использованием docker-compose.yml - PullRequest
0 голосов
/ 10 декабря 2018

Я использую docker-compose.yml для создания своей среды.

docker-compose.yml

  version: '3'

    services:
      mysql:
        image: mysql:5.5
        container_name: mysql
        restart: always
        environment:
          MYSQL_DATABASE: my-test-app
          MYSQL_ROOT_PASSWORD: root
        volumes:
          - ./docker/db:/docker-entrypoint-initdb.d
        ports:
           - "3306:3306"

      tomcat:
        image: tomcat:8.5.35
        container_name: tomcat
        volumes:
          - ./docker/myapp.war:/usr/local/tomcat/webapps/myapp.war
        ports:
          - "8080:8080"

Моя папка structore

my-env            
├── docker-compose.yml
├── docker
    ├── myapp.war
    ├── db
         ├── DB_INIT.SQL

DB_INIT.SQL

CREATE TABLE EMPLOYEE (
  EMPLOYEE_ID BIGINT(20) NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(65) NOT NULL,
  DOB DATETIME DEFAULT NULL,
  GENDER VARCHAR(10) NOT NULL,
  MOBILE VARCHAR(65) DEFAULT NULL,
  EMAIL VARCHAR(60) DEFAULT NULL,
  PRIMARY KEY (EMPLOYEE_ID)
) ENGINE=INNODB DEFAULT CHARSET=UTF8MB4;


INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Zaw Than Oo", '1986-12-02', 'MALE', '09420000773', 'zawthanoo@cycdemo.com');
INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Myo Thiha Kyaw", '1990-10-25', 'MALE', '0942568971', 'mthk@cycdemo.com');
INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Htet Wai Yan Kyaw", '1991-12-15', 'MALE', '0942025023', 'hwyk@cycdemo.com');

После выполнения этой рекомендации docker-compose up,

Мой ip док-машины 192.168.99.100.Я могу получить доступ к http://192.168.99.100:8080 Tomcat, но не могу получить доступ к своему приложению http://192.168.99.100:8080/myapp.Это был 404.

Я могу получить доступ к docker's mysql с моего хоста, используя MySQL Work BranchMySQL Work Branch я вижу my-test-app базу данных.но EMPLOYEE таблицы нет.

Tomcat & Mysql успешно установлены.Но мои war и init sql script не в порядке.В моем docker-compose.yml

есть пропущенный конфиг?

1 Ответ

0 голосов
/ 10 декабря 2018

Для базы данных:

Возможно, вы столкнулись с той же проблемой, как описано здесь: https://stackoverflow.com/a/36348572/8221303

1. Сначала выполните это, чтобы удалить текущие контейнеры:

docker-compose rm -vf

2. Удалить имя базы данных из файла составления.

3. Измените файл создания базы данных следующим образом:

CREATE DATABASE `my-test-app`;
USE my-test-app;

CREATE TABLE EMPLOYEE (
  EMPLOYEE_ID BIGINT(20) NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(65) NOT NULL,
  DOB DATETIME DEFAULT NULL,
  GENDER VARCHAR(10) NOT NULL,
  MOBILE VARCHAR(65) DEFAULT NULL,
  EMAIL VARCHAR(60) DEFAULT NULL,
  PRIMARY KEY (EMPLOYEE_ID)
) ENGINE=INNODB DEFAULT CHARSET=UTF8MB4;


INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Zaw Than Oo", '1986-12-02', 'MALE', '09420000773', 'zawthanoo@cycdemo.com');
INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Myo Thiha Kyaw", '1990-10-25', 'MALE', '0942568971', 'mthk@cycdemo.com');
INSERT INTO EMPLOYEE (NAME, DOB, GENDER, MOBILE, EMAIL) VALUES ("Htet Wai Yan Kyaw", '1991-12-15', 'MALE', '0942025023', 'hwyk@cycdemo.com');

4. Запустите Docker-Compose снова.Когда контейнеры запускаются, вы должны увидеть что-то подобное в stdout:

/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/DB_INIT.sql

Для Tomcat:

Возможно, ваше приложение делаетне запускается из-за проблемы с БД.Но если нет, вы можете попробовать следующее:

Сначала проверьте, правильно ли развернут файл WAR.Подключитесь к контейнеру bash с помощью:

docker exec -it tomcat bash

Проверьте, есть ли файл war с развернутым файлом в каталоге webapps:

 /usr/local/tomcat/webapps/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...