compose.yml

yr9zkbsy  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(464)

我正在使用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"

我的文件夹结构

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

数据库初始化.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 ,
我的docker机器ip是 192.168.99.100 . 我可以访问 http://192.168.99.100:8080 但我无法访问我的应用程序 http://192.168.99.100:8080/myapp . 是的 404 .
我可以访问 docker's mysql 通过使用 MySQL Work Branch . 在 MySQL Work Branch ,我明白了 my-test-app 数据库。但是没有 EMPLOYEE table。
tomcat和mysql安装成功。但是我的 war 以及 init sql script 你不好。我的电脑里有没有丢失的配置 docker-compose.yml

myzjeezk

myzjeezk1#

对于数据库:
也许你遇到了和这里描述的相同的问题:https://stackoverflow.com/a/36348572/8221303
1首先运行此命令以删除当前容器:

docker-compose rm -vf

2从合成文件中删除数据库名称。
三。按以下方式修改数据库创建文件:

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

检查webapps目录中是否存在已部署的war文件:

/usr/local/tomcat/webapps/

相关问题