系統環境:
> mkdir -p ~/my_docker/centos5-lamp_php51 > cd ~/my_docker/centos5-lamp_php51
Dockerfile, startup.sh
Dockerfile:
############################################################ # Dockerfile to build LAMP with PHP 5.1.x container images # Based on CentOS 5 ############################################################ FROM centos:centos5 MAINTAINER A-Lang <alang.hsu@gmail.com> RUN rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 RUN yum -y update RUN yum -y install mysql-server RUN yum -y install httpd php php-mbstring php-mysql RUN yum -y install wv links pdftohtml tidy html2ps ADD ./startup.sh /opt/startup.sh RUN chmod +x /opt/startup.sh RUN echo "/opt/startup.sh" >> /etc/bashrc EXPOSE 80 873 CMD ["/bin/bash"]
TIP:
在 EXPOSE 的設定,除了 80 port 以外,還有 rsync 873 port,這是非必要。
startup.sh:
#!/usr/bin/env bash #=============================================================================== # # AUTHOR: A-Lang <alang.hsu@gmail.com> # #=============================================================================== echo "Starting mysql:" service mysqld start echo "Starting Apache:" service httpd start
> docker build -t alang/centos5-lamp_php51 .
TIP:
完成後,執行 docker images 會顯示剛剛新建的 image。
> docker run -t -i alang/centos5-lamp_php51
TIPs:
- 按下 Ctrl+P, Ctrl+Q 可以退出 container 回到 host,但不會關閉 container。
- 執行 docker attach <container-id> 可以重新進入 container 的 console。
設定時區
container> rm -f /etc/localtime container> ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
輸入 Ctrl+P, Ctrl+Q 退出 container,執行這個指令儲存 image 剛剛的變更
> docker ps > docker commit <container-id> <image-name>
TIP:
儲存 image 時,建議可以在原有的 image-name 加上 v1。
系統環境:
> mkdir -p ~/my_docker/mindtouch1014 > cd ~/my_docker/mindtouch1014
Dockerfile:
啟動 images
> docker run -t -i -v /dockerVol/osslab-wiki/host_shared:/host_shared \ -v /dockerVol/osslab-wiki/var_lib_mysql:/var/lib/mysql \ alang/mindtouch1014
設定 MySQL root 密碼
container> mysqladmin -u root password 'your-pass'
輸入 Ctrl+P, Ctrl+Q 退出 container,執行這個指令儲存 image 剛剛的變更
> docker ps > docker commit <container-id> alang/mindtouch1014:v1
停止 container
> docker ps > docker stop <container-id>
將以上檔案複製到 host 的 /dockerVol/osslab-wiki/host_shared 目錄
啟動 image
docker run -t -i \ -p 80:80 \ -p 873:873 \ --name osslab-wiki \ -v /dockerVol/osslab-wiki/host_shared:/host_shared \ -v /dockerVol/osslab-wiki/var_lib_mysql:/var/lib/mysql \ -v /dockerVol/osslab-wiki/var_www_dekiwiki:/var/www/dekiwiki/ \ alang/mindtouch1014:v1
複製設定檔
container:
> cp /host_shared/mindtouch.deki.startup.xml /etc/dekiwiki > cp /host_shared/mindtouch.host.conf /etc/dekiwiki
匯入資料庫
container:
mysql -u root -p mysql> create database wikidb; mysql> create user 'wikiuser'@'localhost' identified by 'db_pass'; mysql> grant all privileges on wikidb.* to 'wikiuser'@'localhost'; mysql> exit cd /host_shared/ mysql -u wikiuser -p wikidb < wikidb.sql
TIP:
要查詢設定檔內所設定的 DB 密碼,執行
sed -n '/db-password/p' /host_shared/mindtouch.deki.startup.xml
還原備份的 html.tgz
container:
cd /var/www/ tar xzf /host_shared/html.tgz chown -R dekiwiki:apache /var/www/dekiwiki
啟動 Dekiwiki 服務
container:
service dekiwiki start
檢查網站是否正常運作,如果有,繼續下述步驟:
編輯 /opt/startup.sh
最下方加上這一行
service dekiwiki start
輸入 Ctrl+P, Ctrl+Q 退出 container
將目前的 container 存在 v2 版的 image
host :
docker ps docker commit <container-id> alang/mindtouch1014:v2
image 最後啟動
docker run -t -i \ -p 80:80 \ -p 873:873 \ --name osslab-wiki \ -v /dockerVol/osslab-wiki/host_shared:/host_shared \ -v /dockerVol/osslab-wiki/var_lib_mysql:/var/lib/mysql \ -v /dockerVol/osslab-wiki/var_www_dekiwiki:/var/www/dekiwiki/ \ alang/mindtouch1014:v2