美文网首页
docker-linux-学习笔记-构建一个网站

docker-linux-学习笔记-构建一个网站

作者: 青山有扶苏 | 来源:发表于2020-03-17 07:37 被阅读0次
    每天给自己一个希望,试着不为明天而烦恼,不为昨天而叹息,只为今天更美好。
    

    一、前期预备工作:创建image仓库镜像
    本次使用docker 构建一个discuz论坛的容器
    1.1 先创建一个本次实验的文件夹目录

    ➜  docker mkdir docker-discuz && cd docker-discuz
    ➜  docker-discuz
    

    构建一个php的容器,并做简单的测试。

    ➜  docker-discuz docker container run --rm --name discuz --volume "$PWD/":/var/www/html php:5.6-apache
    

    这个命令是基于php的镜像文件,创建了一个容器, 并且自带apache 服务器,上述命令的几个参数的含义

    --rm: 停止运行后,自动删除服务器
    --name discuz:容器的名字,这里定义为discuz
    --volume "$PWD/":/var/www/html :将当前目录($PWD)映射到容器的/var/www/html(Apache 服务器默认的目录)。因此,当前目录的任何修改,都会同步到容器中,从而被外部访问到。
    

    启动之后,会分配一个ip我们访问测试一下

    ➜  docker-discuz docker container run --rm --name discuz --volume "$PWD/":/var/www/html php:5.6-apache
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
    

    可以看到这里的ip为 172.17.0.3,访问如果得到如下画面,就表示容器构建成功。


    image.png

    因为这里我是通过调用远程服务器的,所以这个ip没办法在当前电脑直接访问,所以,在启动容器时,同样可以指定一个ip,停掉上面的容器(因为加了--rm,因此在容器停止运行时,容器会被清理,如果启动时忘了加上--rm参数,可以参考前面的笔记去删掉这个容器)

    ➜  docker-discuz docker container run -d -p 192.168.1.202:80:80 --rm --name discuz --volume "$PWD/":/var/www/html php:5.6-apache
    # -d 参数表示后台运行
    # -p 表示容器启动时,给定 这个ip地址 80:80 表示,把容器中的80端口(冒号后面的80),映射给物理机80端口(冒号前面的80)
    

    然后在本地电脑尝试访问一下


    image.png

    一切都很顺利,接下来,看看目录映射是否成功,在当前目录下,创建一个php文件,内容如下

    <?php
            phpinfo();
    ?>
    

    因为php是解释运行的语言,这里不用重启容器,可以直接访问看看映射目录是否成功


    image.png

    很幸运,一切都按照我们的预想来的,接下来,就去准备discuz的安装包,放到当前目录(已经测试成功可映射到容器的apache访问目录)

    1.2 开始安装部署discuz
    discuz官方网站

    https://www.discuz.net/forum.php
    

    这里我用这个版本

    https://files.gitee.com/group1/M00/0A/98/wKgCNF3jszaAR3zfALQPsgJPd6k089.zip?token=d86601ae859d6b7174a07433e77fb827&ts=1584378548&attname=Discuz_X3.4_SC_UTF8%E3%80%9020191201%E3%80%91.zip&disposition=attachment
    

    下载到当前目录之后,解压,然后在浏览器就可直接安装,根据我上面配置的IP地址,我的访问地址是

    [http://192.168.1.202/upload/install/](http://192.168.1.202/upload/install/)
    
    image.png

    这里能访问之后,在创建一个mysql的镜像,discuz需要连接mysql才能正常工作。

    1.3 准备一个mysql容器

    ➜  docker-discuz docker container run -d --name discuzdb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=discuz mysql:5.7
    

    上面中,几个参数的含义

    -d: 容器启动之后,后台运行
    --name discuzdb:容器名称
    --env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个变量
             该变量会被作用MySQL的ROOT用户的密码
    --env MYSQL_DATABASE=discuz:容器里面的MySql会根据该变量创建一个同名数据库
    

    1.4 修改容器
    php官方的image不带有mysql扩展,因此,必须自己新建image文件
    由于上一次是背景执行,可以根据前面容器章节学到的知识,停止这个容器

    #查看正在运行的容器
    ➜  docker-discuz docker container ls
    

    可以看到 一个为discuz的容器,另一个则是上面创建的mysql的容器


    image.png

    停止discuz这个容器

    ➜  docker-discuz docker container stop d9885188acd5
    d9885188acd5
    

    因为启动时加了--rm因此,停止之后,容器会自动被删除。
    接下来,在discuz这个目录创建 一个Dockerfile文件,下入如下内容

    FROM php:5.6-apache
    RUN docker-php-ext-install mysqli
    CMD apache2-foreground
    

    Dockerfile文件内容说明,请参与前面的Dockerfile文件的内容

    新建这个镜像

    ➜  docker-discuz docker build -t discuz-mysql-web .
    Sending build context to Docker daemon  43.15MB
    Step 1/3 : FROM php:5.6-apache
     ---> 24c791995c1e
    Step 2/3 : RUN docker-php-ext-install mysqli
     ---> Using cache
     ---> eaed6408ae5e
    Step 3/3 : CMD apache2-foreground
     ---> Using cache
     ---> b4ea8a7a6c77
    Successfully built b4ea8a7a6c77
    Successfully tagged discuz-mysql-web:latest
    

    1.5 让discuz和mysql相遇。
    现在基于discuz-mysql-web 的image 重新创建一个 discuzweb的容器。

    docker container run \
    -d -p 192.168.1.202:80:80 --rm \
    --name discuz-web \
    --volume "$PWD/":/var/www/html \
    --link discuzdb:mysql \
    discuz-mysql-web
    

    和之前单独启动一个容器比较,这里多了--link discuzdb:mysql 参数,表示discuz-web容器需要连接到discuzdb容器,冒号后面表示该容器的别名
    ,此时需要修改一下 当前目录也就是 docker-discuz目录的访问权限

    sudo chmod -R 777 docker-discuz
    

    接下来,在浏览器输入上面配置的ip,就可以安装discuz了。


    image.png

    安装前的一些检查


    image.png image.png

    选择全新安装


    image.png

    配置数据库

    image.png
    这里的服务器就用 link后面参数给的别名,
    数据库名用discuzdb创建后面给的库名,和密码
    其他根据自己实际情况填写
    开始安装
    image.png
    安装成功
    image.png
    一个用docker构建的服务就完成了
    image.png
    经过一番操作之后,我们发现,在docker的这种方式,显示创建数据库容器,在添加web容器,虽然省去了搭建运行环境的时间,但是当项目模块比较多时,必须手动分别启动多个容器,因此Docker提供了 docker-compose工具,下节,接着学习Docker Compose

    本文参考自

    https://docs.docker.com
    http://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html
    如有侵权,请联系我尽快修改|删除
    
    幸运!都是自己给自己带来的
    

    完结,撒花


    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:docker-linux-学习笔记-构建一个网站

          本文链接:https://www.haomeiwen.com/subject/znvaehtx.html