站長資訊網
        最全最豐富的資訊網站

        Docker 安裝搭建 Tomcat + MySQL

        準備

        1. 虛擬機
        2. 虛擬機安裝Docker

        在純凈的CentOS鏡像上搭建

        Centos鏡像準備

        • 虛擬機上拉取 Centos 鏡像: docker pull centos
        • 創建一個容器運行Centos鏡像:docker run -it -d –name mycentos centos /bin/bash

        注:這里遇到了一個錯誤【WARNING: IPv4 forwarding is disabled. Networking will not work.

        更改虛擬機文件:vim  /usr/lib/sysctl.d/00-system.conf  添加如下內容  net.ipv4.ip_forward=1  重啟網絡:systemctl restart network

        注:這里又衍生一個問題,docker中systemctl無法正常使用。在官網找到如下解決辦法

        鏈接:https://forums.docker.com/t/systemctl-status-is-not-working-in-my-docker-container/9075/4

        run 鏡像的時候用如下語句  docker run --privileged  -v /sys/fs/cgroup:/sys/fs/cgroup -it -d --name usr_sbin_init_centos centos /usr/sbin/init  #注意幾點   #1. 必須有--privileged  #2. 必須有-v /sys/fs/cgroup:/sys/fs/cgroup  #3. 將bin/bash替換成 /usr/sbin/init

        最后終于能夠正常運行起來一個Centos鏡像了。

        安裝JAVA 環境

        • 準備JDK tar包上傳到 虛擬機中
        • 使用docker cp 將tar包放入docker容器中
        docker cp  jdk-11.0.2_linux-x64_bin.tar.gz 41dbc0fbdf3c:/  #與linux cp指定用法相同,需要加上container的標識:id或者name
        • 解壓tar包
        tar -xf jdk-11.0.2_linux-x64_bin.tar.gz  -C /usr/local/java/jdk
        • 編輯profile文件 export java環境變量
        # /etc/profile  export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_91  export PATH=$JAVA_HOME/bin:$PATH  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        • 運行 source /etc/profile,使環境變量生效
        • 檢測是否成功
        java --version   #結果  java 11.0.2 2019-01-15 LTS  Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)  Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

        安裝Tomcat

        • 準備好tomcat tar 包上傳到虛擬機,并cp到docker容器中
        • 解壓到
        tar -xf apache-tomcat-8.5.38.tar.gz  -C /usr/local/tomcat
        • 設置開機啟動,通過使用rc.local文件實現
        #rc.local 增加如下代碼  export JAVA_HOME=/usr/local/java/jdk/jdk-11.0.2  /usr/local/tomcat/apache-tomcat-8.5.38/bin/startup.sh
        • 開啟tomcat
        #到/usr/local/tomcat/apache-tomcat-8.5.38/bin/目錄下 運行  ./startup.sh
        • 檢測
        curl localhost:8080  #返回html源碼內容

        安裝mysql

        • 獲取 mysql 的yum源
         wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
        • 安裝上面的yum 源
        yum -y install mysql57-community-release-el7-10.noarch.rpm
        • yum 安裝 mysql
        yum -y install mysql-community-server
        • 更改mysql 配置:/etc/my/cnf
        validate_password=OFF # 關閉密碼驗證  character-set-server=utf8   collation-server=utf8_general_ci  log-error=/var/log/mysqld.log   pid-file=/var/run/mysqld/mysqld.pid  initialize specified but the data directory has files in it # 從5.6開始timestamp 的默認行為已經是 deprecated 了,需要關閉警告  [client]  default-character-set=utf8
        • 獲取mysql 初始密碼
        grep "password" /var/log/mysqld.log  #結果:[Note] A temporary password is generated for root@localhost: k:nT<dT,t4sF  #使用這個密碼登錄mysql
        • 進入到mysql,進行操作
        # 進入  mysql -u root -p   #更改密碼  ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';  # 更改 使mysql可以遠端訪問  update user set host = '%' where user = 'root';
        • 測試,可以使用物理機,使用navicat 對docker中的mysql進行訪問

        打包容器

        • 放到docker hub上
        # 將容器提交成  鏡像  docker commit -a 'kane' -m 'test' container_id images_name:images_tag  # 推到dockerhub  docker push kane0725/tomcat
        • 到處本地tar包
        # 導出打成本地 tar 包  docker export -o test.tar a404c6c174a2  # 將 tar 包導入成鏡像  docker import test.tar test_images

        使用Dockerfile

        注:只搭建一個tomcat的鏡像

        準備工作

        1. 創建一個專門的文件夾,放入jdk 與tomcat的 tar包
        2. 在這個目錄下創建Dockerfile文件
        3. centos 基礎鏡像

        文件內容

        FROM centos  MAINTAINER tomcat mysql  ADD jdk-11.0.2 /usr/local/java  ENV JAVA_HOME /usr/local/java/  ADD apache-tomcat-8.5.38 /usr/local/tomcat8  EXPOSE 8080

        使用docker build輸出結果

        [root@localhost dockerfile]# docker build -t tomcats:centos .  Sending build context to Docker daemon 505.8 MB  Step 1/7 : FROM centos   ---> 1e1148e4cc2c  Step 2/7 : MAINTAINER tomcat mysql   ---> Using cache   ---> 889454b28f55  Step 3/7 : ADD jdk-11.0.2 /usr/local/java   ---> Using cache   ---> 8cad86ae7723  Step 4/7 : ENV JAVA_HOME /usr/local/java/   ---> Running in 15d89d66adb4   ---> 767983acfaca  Removing intermediate container 15d89d66adb4  Step 5/7 : ADD apache-tomcat-8.5.38 /usr/local/tomcat8   ---> 4219d7d611ec  Removing intermediate container 3c2438ecf955  Step 6/7 : EXPOSE 8080   ---> Running in 56c4e0c3b326   ---> 7c5bd484168a  Removing intermediate container 56c4e0c3b326  Step 7/7 : RUN /usr/local/tomcat8/bin/startup.sh   ---> Running in 7a73d0317db3    Tomcat started.   ---> b53a6d54bf64  Removing intermediate container 7a73d0317db3  Successfully built b53a6d54bf64

        docker build的問題

        一定要帶上命令后面的  .  否則會報錯的  "docker build" requires exactly 1 argument(s).

        運行一個容器

        # 進入容器  docker run -it --name tomcats --restart always -p 1234:8080 tomcats /bin/bash  #運行tomcat startup.sh  /usr/local/tomcat8/bin/startup.sh  #結果  Using CATALINA_BASE:   /usr/local/tomcat8  Using CATALINA_HOME:   /usr/local/tomcat8  Using CATALINA_TMPDIR: /usr/local/tomcat8/temp  Using JRE_HOME:        /usr/local/java/  Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar  Tomcat started.

        使用docker compose

        安裝 docker compose

        官方:https://docs.docker.com/compose/install/

        我選擇的方式是pip安裝

        # 安裝  pip install docker-compose  # 檢測  docker-compose --version  # -----------------------  docker-compose version 1.23.2, build 1110ad0

        編寫docker-compose.yml

        # 這個yml文件 搭建一個mysql 一個 tomcat的容器  version: "3"     services:    mysql:      container_name: mysql      image: mysql:5.7                                restart: always      volumes:        - ./mysql/data/:/var/lib/mysql/                                     - ./mysql/conf/:/etc/mysql/mysql.conf.d/      ports:        - "6033:3306"      environment:        - MYSQL_ROOT_PASSWORD=********    tomcat:      container_name: tomcat      restart: always      image: tomcat      ports:        - 8080:8080        - 8009:8009      links:        - mysql:m1                                       #連接數據庫鏡像

        注:

        • volumn里必須是路徑,不能指定文件

        • tomcat指定外部conf的時候一直創建不成功,不知道為什么,提示

          tomcat    | Feb 20, 2019 2:23:29 AM org.apache.catalina.startup.Catalina load  tomcat    | WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]  tomcat    | Feb 20, 2019 2:23:29 AM org.apache.catalina.startup.Catalina start  tomcat    | SEVERE: Cannot start server. Server instance is not configured.  tomcat exited with code 1

          運行命令

        注:必須在yml文件的目錄下下執行

        docker-compose up -d  # 結果----------查看docker container-------  [root@localhost docker-compose]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                                             NAMES  1a8a0165a3a8        tomcat              "catalina.sh run"        7 seconds ago       Up 6 seconds                     0.0.0.0:8009->8009/tcp, 0.0.0.0:8080->8080/tcp    tomcat  ddf081e87d67        mysql:5.7           "docker-entrypoint..."   7 seconds ago       Up 7 seconds                     33060/tcp, 0.0.0.0:6033->3306/tcp                 mysql
        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产高清国产精品国产专区| 国产精品国产AV片国产| 欧美精品888| 亚洲综合欧美精品一区二区| 青青草国产精品久久久久| 九九精品99久久久香蕉| 欧洲精品一区二区三区在线观看 | 在线精品视频播放| 精品成在人线AV无码免费看| 亚洲国产精品无码成人片久久| 久久se这里只有精品| 国产精品婷婷午夜在线观看| 久久亚洲精品视频| 2022国产精品不卡a| 久久亚洲精品成人av无码网站| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 精品亚洲一区二区三区在线观看| 狠狠色丁香婷婷综合精品视频| 精品国产三级a在线观看| 亚洲国产美女精品久久久久∴| 欧美精品整片300页| 免费看一级毛片在线观看精品视频 | 精品无码国产污污污免费网站 | 99久久99这里只有免费费精品| 热re99久久精品国99热| 亚洲国产精品SSS在线观看AV| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 国产精品一区12p| 国产亚洲精品看片在线观看| 国产精品免费αv视频| 国产成人毛片亚洲精品| 国产成人精品cao在线| 国产成人精品日本亚洲专区| Xx性欧美肥妇精品久久久久久| 91精品国产自产在线观看| 91人前露出精品国产| 国产成人99久久亚洲综合精品| 国产综合成人色产三级高清在线精品发布 | 久久99精品久久久久久噜噜| 久久亚洲中文字幕精品一区| 亚洲?V无码乱码国产精品|