基于DaoCloud创建StartBBS容器实战

[编者的话] 当文字偶遇代码,当程序插上了翅膀,让分享成为我们彼此沟通的语言。我们期待可以构建这样一个平台让开发者们看到你们的智慧,挖掘你们的才华,让彼此在开源的路上不再孤独。“DaoCloud分享写作计划”已全面启动,欢迎投稿。


作者:Geekwolf


首先,StartBBS 是一款优雅、开源、轻量社区系统,基于MVC架构,采用PHP+MySQL

实验环境

  • 基于DaoCloud平台构建镜像容器
  • 基础镜像采用ubuntu:trusty
  • 测试机centos6.6 x64

创建步骤

测试机安装docker并编写dockerfile文件

yum -y update  
yum -y install docker-io  
service docker start  
chkconfig docker on  

更改docker的默认mirrors(可以注册DaoCloud有免费加速镜像下载地址)

使用Docker的时候,需要经常从官方获取镜像。由于显而易见的网络原因,获取镜像的过程较慢,令人非常痛苦。因此DaoCloud推出Docker加速器解决这个难题。Docker加速器利用Docker官方的Mirror机制,一次配置,无缝使用。

sed -i 's#other_args=#other_args="--registry-mirror=http://7de036e1.m.daocloud.io"#g' /etc/sysconfig/docker  

下载基础镜像

docker pull ubuntu:trusty  

在Github上fork StartBBS

git clone https://github.com/geek-linux/startbbs.git  
cd startbbs  

创建Dockerfile文件

FROM ubuntu:trusty

MAINTAINER Geekwolf  
RUN  apt-get -y update && apt-get  -y install mysql-client php5 ImageMagick  apache2 php5-gd php5-mysql  
RUN  rm -rf  /var/www/html/*  
ADD . /var/www/html  
RUN  chown -R www-data:www-data /var/www/html  
WORKDIR /var/www/html  
RUN echo "ServerName startbbs.daoapp.io">>/etc/apache2/apache2.conf  
RUN sed -i "s#'localhost'#getenv("MYSQL_PORT_3306_TCP_ADDR")#g" app/config/database.php && sed -i "s#'startbbs'#getenv("MYSQL_INSTANCE_NAME")#g" app/config/database.php && sed -i "s#'root'#getenv("MYSQL_USERNAME")#g" app/config/database.php && sed -i "s#'123456'#getenv("MYSQL_PASSWORD")#g" app/config/database.php

EXPOSE 80  
CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND"]  

:ServerName可以根据DaoCloud平台自定义一个daoapp.io的二级域

根据Dockerfile从基础镜像中创建StartBBS web镜像

cd startbbs  
docker build -t startbbs .  
docker run --name=startbbs -it startbbs:latest /bin/bash  
无ssh登陆容器查看是否正常
nsenter --target $(docker inspect --format "{{.State.Pid}}" startbbs) --mount --uts --ipc --net --pid  

最后,将Dockerfile文件提交到StartBBS代码库根目录

git add Dockerfile  
git commit -am "Add Dockerfile"  
git push origin master  

在DaoCloud平台构建镜像

  • 登陆 https://www.daocloud.io ,选择 代码构建 -- 创建项目

  • 设置代码源Github,选择代码库StartBBS,暂时关闭持续集成--发布应用镜像:镜像仓库--开始创建

  • 选择服务集成--选择MySQL镜像--创建服务实例--我的服务查看数据库账号信息

  • 此处简单起见使用DaoCloud自带的phpMyAdmin镜像(镜像仓库)创建容器,并导入StartBBS的sql文件( data/db/startbbs.sql)

  • 创建StartBBS容器,镜像仓库--选择StartBBS镜像--点击部署--容器名字:StartBBS--选择相应的容器配置--点击服务&环境--绑定MySQL容器--立即部署--容器启动后,设置域名http://startbbs.daoapp.io ,绑定自有域名 http://bbs.simlinux.com ,增加dns解析cnamez3y206n242.daoap.me 即可

  • 访问 http://startbbs.daoapp.io 初始化StartBBS,到此StartBBS容器安装完成

  • 创建的容器在 https://dashboard.daocloud.io 即可看到


本文来自“DaoCloud分享写作计划”,这项计划旨在为开发者提供一个平台,分享使用Docker的心得体会和技术经验。DaoCloud将为文章作者提供一定的物质奖励,具体方式请访问:DaoCloud写作分享计划 ,欢迎Docker爱好者和DaoCloud用户踊跃投稿。