[도커] 웹 어플리케이션 도커 컨테이너 환경 구성하기

    728x90
    반응형

    Web Application On Docker

    What is Web Application?

    WAS에 배포되는 어플리케이션
    웹 서비스라고도 한다.

     

    도커 환경의 데이터베이스 구성

    #MySQL docker-compose yaml파일을 생성
    [root@]$ vi mysql-docker-compose.yml

     

    version: '3.8'
    
    services:
      mysql:
        image: mysql:8.0 # MySQL 버전 설정 (8.0 버전 사용)
        container_name: mysql
        environment:
          MYSQL_ROOT_PASSWORD: root # MySQL root 계정의 비밀번호
        ports:
          - "43306:3306" # 로컬 머신의 43306 포트를 컨테이너의 3306 포트와 연결
        volumes:
          - ${HOME}/docker/volume/mysql:/var/lib/mysql # 데이터 영속성을 위해 로컬 볼륨을 MySQL 데이터 디렉토리에 마운트
        networks: # 다른 컨테이너와의 통신을 위해 사용되는 네트워크 브릿지
          - mysql_network
    
    networks:
      mysql_network:
        driver: bridge

     

    #docker-compose를 사용해 MySQL컨테이너 생성
    [root@]$ docker-compose -f mysql-docker-compose.yml up -d
    
    
    #컨테이너 생성여부 확인
    [root@]$ docker ps
    CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS       PORTS                                NAMES
    e7ad17baf741   mysql:8.0       "docker-entrypoint.s…"   13 days ago   Up 3 hours   33060/tcp, 0.0.0.0:43306->3306/tcp   mysql

     

    Dockerfile 작성

    Dockerfile은 Docker 이미지를 자동으로 빌드하기 위한 설정 파일이다.
    Dockerfile로 환경을 자동화하고 일관된 배포 환경을 만들 수 있다.

     

    #Dockerfile 작성
    [root@]$ vi Dockerfile

     

    # JDK 8 버전을 사용한 Tomcat 이미지를 기반으로 설정
    FROM tomcat:9-jdk8-openjdk
    
    # 설정 파일을 Tomcat의 conf 폴더에 복사
    COPY conf/catalina.properties /usr/local/tomcat/conf/catalina.properties
    COPY conf/server.xml /usr/local/tomcat/conf/server.xml
    COPY conf/context.xml /usr/local/tomcat/conf/context.xml
    COPY bin/setenv.sh /usr/local/tomcat/bin/setenv.sh
    
    # 환경변수 설정
    ENV TOMCAT_DIR=/usr/local/tomcat
    
    # Tomcat이 사용할 포트를 10080으로 설정
    EXPOSE 10080
    
    # Tomcat을 시작하는 명령어
    # start: 백그라운드 프로세스 실행/setenv.sh을 실행함
    # run: 포그라운드 프로세스 실행/setenv.sh을 실행하지 않음
    CMD ["bash", "-c", "catalina.sh start && tail -f /dev/null"]

     

    #도커 이미지 빌드
    [root@]$ docker build -t demo .
    
    
    #도커 빌드 이미지 확인
    [root@]$ docker images
    REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
    demo                             latest    7a2e328dee14   12 days ago    841MB

     

    #컨테이너 실행
    [root@]$
       docker run -d -p 10080:10080 \
    	-v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo \
    	-v /home/imfra/logs:/app/logs \
        -v /etc/localtime:/etc/localtime:ro \
        -e TZ=Asia/Seoul \
        -e LC_ALL=C.UTF-8 \
        --network mysql_mysql_network \
        --name demo demo

     

    #컨테이너 실행 옵션
    [root@]$
       docker run -d -p 10080:10080 \
    	-v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo \
    	-v /home/imfra/logs:/app/logs \
        -v /etc/localtime:/etc/localtime:ro \
        -e TZ=Asia/Seoul \
        -e LC_ALL=C.UTF-8 \
        --network mysql_mysql_network \
        --name demo demo
    
    -d (detached mode)
    백그라운드 실행 옵션
    컨테이너가 백그라운드에서 실행되며, 명령어 실행이 끝난 후에도 터미널을 사용할 수 있다.
    
    -p 호스트포트:컨테이너포트 (포트 매핑)
    호스트와 컨테이너 간의 포트 매핑하는 옵션
    10080:10080은 localhost:10080로 접근하면 컨테이너의 10080 포트로 트래픽이 전달된다.
    
    -v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo (볼륨 마운트)
    호스트 디렉터리와 컨테이너 디렉터리를 연결하는 옵션
    /home/imfra/docker/demo: 호스트 시스템의 디렉토리
    /usr/local/tomcat/webapps/demo: 컨테이너 내의 디렉토리
    웹 애플리케이션을 Tomcat에 배포할 때 사용된다.
    
    -v /etc/localtime:/etc/localtime:ro (시스템 시간 동기화)
    -e TZ=Asia/Seoul (컨테이너의 시간대를 서울(Asia/Seoul) 로 설정)
    -e LC_ALL=C.UTF-8 (UTF-8 문자 인코딩)
    
    --network mysql_mysql_network (네트워크 설정)
    컨테이너가 사용할 Docker 네트워크를 지정하는 옵션
    해당 네트워크에 속한 다른 컨테이너들과 네트워크 통신이 가능해진다.
    
    --name demo (컨테이너 이름 지정)
    컨테이너의 이름을 지정하는 옵션

     

    #프로세스 확인
    [root@]$ docker ps
    CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS       PORTS                                NAMES
    772944c7d0ad   demo            "bash -c 'catalina.s…"   8 days ago    Up 3 hours   0.0.0.0:10080->10080/tcp             demo

     


    728x90
    반응형

    댓글