반응형

Docker tomcat mysql mongo

tomcat 서버에서 mysql과 mongodb를 동시에 사용할 일이 있어서 도커 환경으로 만들어봤다.

clean.sh

#!/bin/sh
/usr/bin/sudo rm -rf ./db ./webapps ./mongo
mkdir db
mkdir mongo
mkdir -p webapps
mkdir initdb
cd initdb
initdb.sql : 테이블 스키마. 초기 데이터 쿼리
mkdir initmongo
cd initmongo
cat > initdb.js
db.createUser(
    {
        user: "myhome",
        pwd: "myhome00.",
        roles:[
            {
                role: "readWrite",
                db:   "DB_ANALYZE"
            }
        ]
    }
);
mkdir locallib
cd locallib
*.so 파일 복사. (/usr/local/lib 으로 연결)
mkdir myhome
cd myhome
was에서 사용하는 설정 파일들

docker-compose.yml

version: '2'
services:
        db:
                image: mysql:5.7
                environment:
                        MYSQL_ROOT_PASSWORD: myhome00.
                        MYSQL_DATABASE: DB_ANALYZE
                        MYSQL_USER: myhome
                        MYSQL_PASSWORD: myhome00.
                ports:
                        - "3306:3306"
                volumes:
                        - ./mycustom.cnf:/etc/mysql/conf.d/custom.cnf
                        - ./db:/var/lib/mysql
                        - ./initdb:/docker-entrypoint-initdb.d
                restart: always
        mongo:
                image: mongo
                environment:
                        MONGO_INITDB_ROOT_USERNAME: myhome
                        MONGO_INITDB_ROOT_PASSWORD: myhome00.
                        MONGO_INITDB_DATABASE: DB_ANALYZE
                ports:
                        - "27018:27017"
                volumes:
                        - ./mongo:/data/db
                        - ./initmongo:/docker-entrypoint-initdb.d
                restart: always

        web:
                image: crazyj7/ubuntu16.04-tomcat8-jre8
                depends_on:
                        - db
                        - mongo
                environment:
                        JDBC_URL: jdbc:mysql://db:3306/DB_ANALYZE?connectTimeout=0&socketTimeout=0&autoReconnect=true
                        JDBC_USER: myhome
                        JDBC_PASS: myhome00.
                ports:
                        - "9090:8080"
                mac_address: 02:42:ac:15:00:03
                volumes:
                        - ./webapps:/usr/local/tomcat/webapps
                        - ./myhome:/myhome
                        - ./locallib:/usr/local/lib
                links:
                        - db
                        - mongo
                restart: always

mycustom.cnf

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
skip-name-resolve

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

! 중요!! skip-name-resolve를 위에 지정하지 않으면 DB 접속시 1분정도??? Delay가 발생하는 현상이 생길수 있다!

실행

docker-compose up

다른 쉘에서 war를 webapps에 복사한다.

9090 포트로 접속하여 테스트

+ Recent posts