在ARMV8上利用docker部署nginx-php折腾记

背景

手里有个armv8的设备,跑了ubuntu,众所周知arm架构的机子安装软件也许不是很方便,在docker官方镜像发现了有armv8的库,准备折腾一下,如此以来既解决了软件安装的烦恼又更加容易管理软件,卸载的时候应该是最干净的。。在此记录一下过程

docker安装

  • 从 Ubuntu 14.04 开始,一部分内核模块移到了可选内核模块包 (linux-image-extra-*) ,以减少内核软件包的体积。正常安装的系统应该会包含可选内核模块包,而一些裁剪后的系统可能会将其精简掉。AUFS内核驱动属于可选内核模块的一部分,作为推荐的 Docker 存储层驱动,一般建议安装可选内核模块包以使用AUFS

    1
    2
    3
    4
    apt-get update	
    apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual
  • 添加官方源

    1
    2
    3
    4
    5
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    add-apt-repository \
    "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  • 安装docker

    1
    2
    apt-get update
    apt-get install -y docker-ce

安装php和nginx

  arm64的官方库地址为https://hub.docker.com/u/arm64v8/我们找到需要的软件版本pull下来即可,在此我选择的是nginx 1.13.6php 7.1-fpm

1
2
docker pull arm64v8/nginx:1.13.6
docker pull arm64v8/php:7.1-fpm

构建php-nginx项目

  完成上述安装过程就可以开始折腾了,这里的重点是配置文件的修改以及端口的映射。

  • 使用php-fpm镜像开启php-fpm应用容器

docker run --name php -v /www/s2.nozark.xyz:/usr/share/nginx/html -d arm64v8/php:7.1-fpm

-d : 该参数为后台运行之意
-v : 指定宿主机与容器的映射关系。/www/s2.nozark.xyz为宿主机的项目目录(自定义的),/usr/share/nginx/html为nginx服务器项目默认的路径。

  • 使用nginx镜像开启nginx应用容器

docker run --name nginx -p 80:80 -v /www/s2.nozark.xyz:/usr/share/nginx/html -d arm64v8/nginx:1.13.6

  • 查看对应的IP信息

docker inspect myFpm | grep "IPAddress"

  在此我得到ip为172.17.0.2.

  • 复制出nginx默认配置文件并编辑

docker cp nginx:/etc/nginx/conf.d/default.conf ./default.conf
  修改其中php部分

location ~ .php$ {
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}

  • 将编辑好的nginx配置文件替换回docker
    docker cp ./default.conf nginx:/etc/myNginx:/etc/nginx/conf.d/default.conf
  • 重启nginx
    1
    2
    3
    docker exec -it nginx /bin/bash
    service nginx reload
    ctrl + p + j(或者直接docker exec -it nginx service nginx reload)

大功告成~~

  现在你已经可以在目录下运行你的web啦,顺便说一下安装扩展,我需要的是gd扩展,按照下面的操作:

1
2
3
4
5
6
7
8
9
docker exec -ti php /bin/bash
apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

加速PT上传,脚本获取更多Transmission Peers

  1. 1. 背景
  2. 2. docker安装
  3. 3. 安装php和nginx
  4. 4. 构建php-nginx项目
  5. 5. 大功告成~~