dockerfile源码安装mysql_docker容器详解五: dockerfile实现tomcat环境以及源码安装mysql...
tomcat
上一節(jié)講到了dockerfile的基礎(chǔ),這一次咱們來(lái)作一個(gè)小的練習(xí)
首先要了解tomcat安裝的整個(gè)過(guò)程
首先搭建 jdk環(huán)境:
下載jdk包,解壓以后添加環(huán)境變量
而后搭建tomcat:
下載tomcat包,解壓,修改配置文件到一個(gè)工做目錄
而后給工做目錄加入一些東西,訪問(wèn)。java
From centos
add ./jdk-8u191-linux-x64.tar.gz /usr/local
add ./apache-tomcat-8.5.35.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk
ENV CLASSPATH $JAVA_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin
RUN mkdir -p /var/www/www.fz.com
VOLUME /var/www/www.fz.com
RUN cd /usr/local/ && mv apache-tomcat-8.5.35 tomcat && mv jdk1.8.0_191 jdk
copy ./server.xml /usr/local/tomcat/conf/
copy ./mysql-connector-java-5.1.7-bin.jar /usr/local/tomcat/lib/
workdir /usr/local/tomcat
CMD bash bin/startup.sh && tail -f logs/catalina.out
這是整個(gè)dockerfile的文件。我來(lái)一次解釋一下
From centos:
這個(gè)沒(méi)什么好說(shuō)的就是一個(gè)基礎(chǔ)的centos的源鏡像
add:
兩個(gè)源碼包 一個(gè)是jdk的一個(gè)是tomcat的包
ENV:這里會(huì)設(shè)置環(huán)境變量,就是三個(gè)jdk的環(huán)境變量
RUN:執(zhí)行命令,建立一個(gè)tomcat的工做目錄,
VOLUME:和上面一塊兒,建立目錄以后把他映射到宿主機(jī),以即可以在外部把具體的頁(yè)面代碼放入。
RUN: 運(yùn)行命令把tomcat放到制定目錄并解壓
copy:第一個(gè)是把tomcat的配置文件的副本拷貝進(jìn)去,第二個(gè)是拷貝jdbc的包,以便之后鏈接數(shù)據(jù)庫(kù)時(shí)用。
workdir:后面的命令都是在/usr/local/tomcat下運(yùn)行
最后一個(gè)CMD很關(guān)鍵。
前面講過(guò),docker的鏡像運(yùn)行以后在執(zhí)行完命令就會(huì)自動(dòng)關(guān)閉,必需要給他一個(gè)可以掛在后臺(tái)運(yùn)行的命令,好比說(shuō)你在run后面會(huì)加上 /bin/bash等等讓他保持活躍的狀態(tài)。否則它就會(huì)自動(dòng)關(guān)閉。
這里若是只有打開(kāi)tomcat而沒(méi)有后面的加載日志,那么就會(huì)在打開(kāi)以后容器立刻又關(guān)閉了。因此docker ps就看不見(jiàn) 須要用 ps -a看全部的容器,會(huì)發(fā)現(xiàn)容器是關(guān)閉的。 就須要用刷新日志的方式讓tomcat在后臺(tái)與進(jìn)行。保持容器的開(kāi)啟狀態(tài)。
前面的須要的文件放在和dockerfile一個(gè)目錄下ok了。
而后編譯運(yùn)行
而后運(yùn)行
中間一部分省略
就能夠看見(jiàn)相似與平時(shí)的開(kāi)啟tomcat的日志
若是不想要在前臺(tái)看日志,能夠-d掛入后臺(tái)。如上圖所示mysql
mysql源碼安裝
mysql源碼安裝的大體過(guò)程
1.下載源碼包,下載一些依賴包例如gcc等
2.編譯安裝
3.建立用戶和組并賦予權(quán)限,而后數(shù)據(jù)庫(kù)初始化
4.設(shè)置數(shù)據(jù)庫(kù)root密碼linux
from centos
ADD ./mysql-5.6.35.tar.gz /usr/local/
RUN yum install gcc gcc-c++ ncurses-devel perl cmake make autoconf -y
RUN cd /usr/local/mysql-5.6.35 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
&& make && make install
RUN groupadd mysql && useradd -r -g mysql mysql && \
chown -R mysql:mysql /usr/local/mysql
ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
workdir /usr/local/mysql
RUN scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
RUN support-files/mysql.server start && mysqladmin -u root password 'redhat'
COPY ./test.sql /root/
RUN support-files/mysql.server start && mysql -uroot -predhat < /root/test.sql
CMD mysqld --user=mysql
這是個(gè)人dockerfile文件
依次解釋:
from:鏡像源
add:把源碼包c(diǎn)opy進(jìn)去并解壓
run: 第一個(gè)是下載一些依賴包,第二個(gè)是編譯安裝。第三個(gè)是用戶和權(quán)限。
env:環(huán)境變量
workdir :工做目錄設(shè)在mysql目錄下
run:數(shù)據(jù)庫(kù)初始化,
第二個(gè)是開(kāi)啟服務(wù)并修改root密碼
這里我踩了一個(gè)坑,修改密碼是要在開(kāi)啟服務(wù)的狀態(tài)下的,一開(kāi)始我沒(méi)有開(kāi)服務(wù),會(huì)出錯(cuò)。第二次我知道了要開(kāi)服務(wù),而后我是先在前面開(kāi)服務(wù),在后面在加一個(gè)run修改密碼,也會(huì)出錯(cuò),為何呢?
由于dockerfile每一行命令都是把鏡像生成一個(gè)容器,而后在容器內(nèi)執(zhí)行命令,子啊構(gòu)建成新的鏡像,這樣一來(lái),上一個(gè)鏡像是開(kāi)啟服務(wù),像開(kāi)啟服務(wù)把他單獨(dú)列在一行是沒(méi)有效果的,由于生成容器開(kāi)啟服務(wù)再生成鏡像還會(huì)同樣的鏡像,下一個(gè)執(zhí)行修改root密碼命令時(shí)候已是一個(gè)新的鏡像了因此服務(wù)是沒(méi)打開(kāi)的。
copy:而后就是拷貝我本身寫(xiě)的一個(gè)mysql的腳本進(jìn)入docker
run:這個(gè)是開(kāi)啟服務(wù)而且執(zhí)行腳本,然數(shù)據(jù)庫(kù)生成表插入數(shù)據(jù)
cmd:這個(gè)是前臺(tái)開(kāi)啟數(shù)據(jù)庫(kù)服務(wù)。
像前面一個(gè)編譯并開(kāi)啟就ok了
這里數(shù)據(jù)庫(kù)的編譯是最基礎(chǔ)的,沒(méi)有不少參數(shù),有需求本身加,而后這里的編譯須要的時(shí)間可能會(huì)有點(diǎn)久。c++
總結(jié)
以上是生活随笔為你收集整理的dockerfile源码安装mysql_docker容器详解五: dockerfile实现tomcat环境以及源码安装mysql...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windbg拦截驱动加载
- 下一篇: linux cmake编译源码,linu