利用Dockerfile構建一個基於centos 7,包括java 8, tomcat 7,php ,mysql+mycat的鏡像

來源:互聯網
上載者:User

標籤:

Dockerfile內容如下:

FROM centosMAINTAINER Victor [email protected]WORKDIR /rootRUN rm -f /etc/yum.repos.d/*RUN  echo ‘[BASE]‘ > /etc/yum.repos.d/base.repoRUN  echo ‘name=base‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘baseurl=http://192.168.244.132/yum/mnt‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘enabled=1‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘gpgcheck=0‘ >> /etc/yum.repos.d/base.repoADD /mysql /mysqlRUN yum  -y install java-1.8.0-openjdk wget httpd php php-mysqlnd /mysql/*RUN mysql_install_db --user=mysqlENV MYSQL_ROOT_PASSWORD=123456ENV MYCAT_USER mycatENV MYCAT_PASS mycatRUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gzRUN tar xvf apache-tomcat-7.0.64.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-7.0.64/ /usr/local/tomcatRUN wget http://code.taobao.org/svn/openclouddb/downloads/old/MyCat-Sever-1.2/Mycat-server-1.2-GA-linux.tar.gzRUN mkdir /usr/local/mycat && tar xvf Mycat-server-1.2-GA-linux.tar.gz -C /usr/local/mycat && useradd mycat && \    chown -R mycat.mycat /usr/local/mycat && chmod a+x /usr/local/mycat/bin/*EXPOSE 8080 8066 9066COPY startup.sh /root/startup.shRUN chmod a+x /root/startup.shENTRYPOINT /root/startup.sh

說明如下:

1. 以下用於構建yum源,由於公司網路有所限制,安裝依賴包的過程讓人淚奔…故果斷利用宿主機的中的系統光碟片搭建http yum源。

RUN rm -f /etc/yum.repos.d/*RUN  echo ‘[BASE]‘ > /etc/yum.repos.d/base.repoRUN  echo ‘name=base‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘baseurl=http://192.168.244.132/yum/mnt‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘enabled=1‘ >> /etc/yum.repos.d/base.repoRUN  echo ‘gpgcheck=0‘ >> /etc/yum.repos.d/base.repo

2. 因為centos 7 的系統光碟片中沒有內建mysql-server,故需要自己下載,正好,mysql社區也提供了基於mysql-serve的yum源,只需在/etc/yum.repos.d/目錄下添加以下檔案mysql-community.repo檔案,內容如下:

[mysql56-community]name=MySQL 5.6 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/enabled=1gpgcheck=0

即便是這種方式,下載過程同樣讓人極度崩潰,無奈,只好自己下載了相關的rpm包,放到本地mysql目錄下,通過ADD命令將該目錄下的檔案COPY到鏡像中。注意:/mysql是相對於Dockerfile的相對路徑,因為我的Dockerfile的絕對路徑為/root/Dockerfile,所以,下面中/mysql中絕對路徑實際上也是/root/mysql/。

ADD /mysql /mysql

/root/mysql中的檔案如下:

[[email protected] ~]# ls /root/mysql/mysql-5.6.26-2.el5.x86_64.rpm                   mysql-community-libs-5.6.26-2.el5.x86_64.rpmmysql-community-client-5.6.26-2.el5.x86_64.rpm  mysql-community-libs-compat-5.6.26-2.el5.x86_64.rpmmysql-community-common-5.6.26-2.el5.x86_64.rpm  mysql-community-server-5.6.26-2.el5.x86_64.rpm

3. 最後一步實際上用指令碼進行啟動

指令碼內容如下:

[[email protected] ~]# cat /root/startup.sh #!/bin/bashsed -i ‘s/user name="test"/user name=\"‘"$MYCAT_USER"‘"/‘ /usr/local/mycat/conf/server.xmlsed -i ‘s/name="password">test/name="password">‘"$MYCAT_PASS"‘/‘ /usr/local/mycat/conf/server.xmlmysqld_safe & /usr/local/mycat/bin/mycat start & httpd & /usr/local/tomcat/bin/catalina.sh run

在該啟動指令碼中,利用參數的方式設定mycat的使用者名稱和密碼,使用者名稱和密碼有Dockerfile中的以下變數指定:

ENV MYCAT_USER mycatENV MYCAT_PASS mycat

注意:在建立基於該鏡像的容器時,也可通過-e參數顯性指定以上兩個參數的值,如果沒有指定,則使用者名稱和密碼的預設值均為Dockerfile中指定的mycat。

驗證如下:

1. 基於Docker產生鏡像

# docker build -t victor/mycat:v1 .

建議:在利用Dockerfile構建鏡像時,可帶上--rm=false參數,即 docker build -rm=false -t victor/mycat:v1 .意思是不刪除build鏡像過程中產生的中間容器,這樣的話,即便這次構建失敗了,再次構建的時候會直接利用cache容器,會方便快捷很多。

2. 查看產生的鏡像

[[email protected] ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEvictor/mycat        v1                  5091cdf7b73a        2 hours ago         1.058 GB

3. 運行容器

# docker run -p 8080:8080 -p 9066:9066 -p 8066:8066 -p 81:80 victor/mycat:v1

首先驗證tomcat是否啟動

 

再次驗證apache是否正常啟動,為了避免和本地的http yum源衝突,我這邊用的是宿主機的81連接埠映射容器的80連接埠

 

驗證mycat是否能正常使用

不難看出,基於mycat的預設使用者名和密碼登陸被拒,必須用指定的使用者名稱和密碼.

參考資料:

1> MyCat_安裝指南(linux).doc https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97

2> Mysql yum源地址 http://repo.mysql.com/yum/mysql-5.6-community/el/5/x86_64/

3> CentOS yum安裝Apache + PHP + Tomcat7 + MySQL http://www.cnblogs.com/jifeng/p/4074591.html

利用Dockerfile構建一個基於centos 7,包括java 8, tomcat 7,php ,mysql+mycat的鏡像

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.