内网服务器 docker部署Lnmp项目

常用命令

镜像的导出导入 和 命名;这一步导出可以保存tar文件,作为离网的环境安装docker-compose

docker save 镜像id > 文件名.tar

docker load < 文件名.tar

docker tag 镜像id 镜像名称:tag

--- docker run -it --network lnmp_lnmp --rm 容器id mysql  --version 调用mysql,但是这个不能再宿主机使用(按理说是有方法执行的,我再找找看)

--- docker exec -it 容器id /bin/bash  进入容器

--- 查看网络配置信息 docker network inspect  network_id

项目部署完成之后,会报一个 driver 连接失败 , 根据报错得知  是因为docker 里面的 pdo-mysql没有开启

解决方法:

进入php容器
>    cd /usr/local/bin

>   ./docker-php-ext-install pdo

>   ./docker-php-ext-install pdo_mysql



//这个步骤估计可以忽略,加了也没关系
然后在/usr/local/etc/php/conf.d 下面创建一个 docker-php-ext-pdo_msql.ini 文件
输入 extention=pdo_mysql.so

 # 最后执行
>docker php容器id restart     //重启一下php容器 

再次运行 就可以了

知识点补充:

**  docker 镜像数据 和 宿主机数据 共享

> docker run -it  -v {主机路径}: {容器路径[这里最好定义一个没用的文件夹]} 镜像id  /bin/bash   // 进入容器里面
然后可以根据双方定义好的数据进行传输比如

{主机路径} 为  /tmp/cyq

{容器路径} 为 /cyq

那么把数据放在这个路径里面,双方的数据就能共享了;

** docker修改容器生成镜像

> sudo docker run -it 镜像id /bin/bash

进行操作,例如需求   php7.2.3-fpm  这个镜像里面,缺少gd 和 zip 下载两个扩展包,并且安装pdo 和 pdo_mysql 需要下载并安装上去

> apt-get update && apt-get install -y libfreetype6-dev  libjpeg62-turbo-dev  libpng-dev && docker-php-ext-install -j$(nproc) iconv && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install mysqli pdo pdo_mysql

// 退出容器

> exit

//这个步骤是跟docker 里面的 Dockerfile 是一样的道理

创建Dockerfile 写入

FROM php7.2.3-fpm

RUN apt-get update && apt-get install -y
libfreetype6-dev
libjpeg62-turbo-dev
libpng-dev
&& docker-php-ext-install -j$(nproc) iconv
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
&& docker-php-ext-install -j$(nproc) gd
&& docker-php-ext-install mysqli pdo pdo_mysql

// ↑ 进入容器会标识当前容器id的,如 root@容器id , 或者根据docker ps -a 查看刚刚的容器;(注意每次run 镜像的时候 都会生成一个单独的容器)

>  docker commit -m="提交的描述信息" -a="作者" 容器id  标镜像名:[标签名]
> docker images   // 查看刚刚生成的新镜像

原文地址:https://www.cnblogs.com/cyq632694540/p/10876993.html