乐趣区

Docker入门基础之应用实战

Docker 入门基础之应用实战

当我们掌握了 Docker 镜像和容器的基本用法后,我们现在能做些什么事情呢?现在我们就来看看使用 Docker 容器如何安装常见的软件,然后运行一个动态网站。

下面我们来学习:

  • 1、安装 Nginx
  • 2、安装 PHP
  • 3、使用 MySQL 服务
  • 4、运行 wordpress 博客

安装 Nginx
运行一个 Alpine 的容器,选择 Alpine 作为系统基础镜像是因为 Alpine 轻巧的体积,基础镜像只有 5.53MB,相比 ubuntu 镜像的 88.9MB 要小十几倍。

 root@ubuntu:~# docker run -it -p 8080:80 alpine sh

安装 nginx

 apk add nginx

修改 nginx 配置

 vi /etc/nginx/conf.d/default.conf

default.conf 内容如下:

server {
    listen 80 default_server;
 ​
    root /home/www;
    index index.php index.html;
 }

创建 Hello World

mkdir /home/www && echo "Hello World" > /home/www/index.html

创建 /run/nginx 目录

mkdir /run/nginx

启动 nginx

nginx

在浏览器中访问 http://192.168.43.122:8080

nginx 安装成功,WEB 服务访问正常!

安装 PHP
现在我们来安装 PHP,方法还是一样,使用 apk add 命令来安装 php7,php-fpm 以及相关扩展。

apk add --no-cache php7 php7-fpm php7-ftp php7-pdo php7-mysqli php7-simplexml php7-xmlwriter php7-zlib php7-imagick php7-memcached php7-sockets php7-mcrypt php7-zip php7-pgsql php7-pdo_odbc php7-odbc php7-curl php7-iconv php7-xml php7-json php7-gd php7-session php7-opcache php7-pdo_sqlite php7-mbstring php7-common php7-pdo_mysql

以上顺带安装了很多 php 扩展,可根据实际需求增减。

现在启动 php-fpm7

php-fpm7

修改 nginx 配置,添加 php 支持

vi /etc/nginx/conf.d/default.conf

内容如下

server {
        listen 80 default_server;

        root /home/www;
        index index.php index.html;
        
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME /home/www$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}

在网站目录中创建 phpinfo.php

echo "<?php phpinfo(); ?>" > /home/www/phpinfo.php

重启 nginx

nginx -s reload

在浏览器中访问 http://192.168.43.122:8080/phpinfo.php

PHP 安装成功,WEB 服务访问正常!

使用 MySQL 服务
我们不在 Alpine 里面安装 MySQL,为了使用效率,这里我们直接使用官方镜像即可,新开一个 ssh 终端连接宿主机,在 home 目录下新建 database 目录

mkdir /home/database

使用官方 mysql5.7 镜像运行一个容器,root 密码设置为 123456,映射 3306 端口,并将宿主机 /home/database 目录挂载到容器 /var/lib/mysql 目录

docker run -dit -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /home/database:/var/lib/mysql mysql:5.7

docker ps查看容器

上图中看到,我们现在运行了 2 个容器,1 个是安装了 nginx 和 php 的 Alpine 容器,1 个是 mysql5.7 的容器

进入 mysql 容器

docker exec -it c8c85af64822 sh

登录并创建 wordpress 数据库

# 用 root 用户登录
mysql -u root -p
#创建 wordpress 数据库
mysql> CREATE DATABASE wordpress;

运行 wordpress 博客
php 网站环境和 mysql 数据库都准备好了,现在我们回到 Alpine 的 ssh 终端上,在容器内下载一个 wordpress 网站程序。

# 进入网站目录
cd /home/www/
#下载 wordpress
wget https://wordpress.org/latest.tar.gz
#解压
tar zxvf latest.tar.gz
#将 wordpress 目录下的文件复制到 www 目录下
cp -ri /home/www/wordpress/* /home/www/
#设置 777 权限
chmod -R 777 /home/www/

在浏览器中访问 http://192.168.43.122:8080,可以看到 wordpres 页面

填写数据库信息

安装完成,wordpress 正常使用!

退出移动版