11-25 09:20
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
관리 메뉴

기록을 합시다.

[docker] docker-compose를 이용하여 mariadb+apache2+tomcat9 연동하기 본문

공부/etc

[docker] docker-compose를 이용하여 mariadb+apache2+tomcat9 연동하기

울집고양이세마리 2023. 5. 25. 15:23

프로젝트 경로 

+---dockerfile_apache2
|       Dockerfile       
|       httpd-vhosts.conf
|       httpd.conf
|
+---dockerfile_mariadb
|       db_board.sql
|       db_user.sql
|       Dockerfile
|
+---dockerfile_tomcat9
|       Board.war
|       Dockerfile
|       server.xml
|
+---etc
|       Board.war
|       index.html
|       serverVersionView.jsp
|
\---miniboard_compose
        docker-compose.yml

Apache2 Dockerfile 작성

FROM httpd 
#귀찮으니 안에서 설정안 하기 위해서 conf 파일들을 아예 옮겨준다.
ADD httpd.conf /usr/local/apache2/conf
ADD httpd-vhosts.conf /usr/local/apache2/conf/extra
WORKDIR /usr/local/apache2
EXPOSE 80

conf 파일 내용 궁금하신 분들은 링크로

근데 일일이 수작업으로 conf 수정하실 분들은 ADD 명령어 빼시면 됩니다.

Tomcat9 Dockerfile 작성

#개인이 만든 톰캣9 이미지를 베이스 이미지로 설정
FROM clearpursuitdocker/tomcat9-jdk11-lite
ADD server.xml /usr/local/tomcat/conf
ADD Board.war /usr/local/tomcat/webapps 
WORKDIR /usr/local/tomcat 
EXPOSE 8080

MariaDB Dockerfile 작성

FROM mariadb 
ENV TZ Asia/Seoul 
ENV MYSQL_ROOT_PASSWORD=12345
ENV MYSQL_DATABASE=webdev  
ENV ls -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo $TZ > /etc/timezone  
ADD db_user.sql /docker-entrypoint-initdb.d/01_db_user.sql
ADD db_board.sql /docker-entrypoint-initdb.d/02_db_board.sql
WORKDIR /  
EXPOSE 3306

+ db_user.sql(미리 유저 정의 및 권한 부여 하는 쿼리 작성)

use webdev;
create user "webmaster"@'%' identified by '12345';
grant all privileges on 'webdev' to "webmaster"@'%';

+ db_board.sql(미리 table 설정하는 쿼리 작성)

create table tbl_board(
    seqno int auto_increment,
    writer varchar(50) not null,
    title varchar(2000) not null,
    regdate timestamp not null default current_timestamp(),
    hitno int null,
    content text not null,
    primary key(seqno)
);

docker-compose.yml 작성

version: "1.0"
services:
  apache2:
    build: ..\dockerfile_apache2
    networks:
      myboard:
        ipv4_address: 172.20.0.2
    restart: always
    environment:
      - VIRTUAL_HOST=www.miniboard.com
    ports:
      - "80:80"  
  tomcat9:
    build: ..\dockerfile_tomcat9
    networks:
      myboard:
        ipv4_address: 172.20.0.3
    restart: always
    environment:
      - VIRTUAL_HOST=www.miniboard.com
    ports:
      - "8080:8080"     
  mariadb:
    build: ..\dockerfile_mariadb
    networks:
      myboard:
        ipv4_address: 172.20.0.4
    restart: always
    ports:
      - "3307:3306"
networks:
  myboard:
    driver: bridge
    ipam:
      driver: default
      config: 
        - subnet: "172.20.0.0/24"
          gateway: "172.20.0.1"

 

 

 

Comments