Linux 上部署 docker,基于 docker 搭建 lnmp 环境

本人知识有限,按照相对简单的叫教程进行操作,如有好的方法可以共享
服务器环境:CentOS 7.6,2核4g
docker版本: Docker Engine - Community(19.03.10)
安装方法:docs.docker.com/engine/install/cen...
我采用的是安装docker引擎的方法,这里不展开详解,官网上介绍的很详细,有问题可以留言讨论。
安装完成后常用命令如下:
docker version:查看docker版本信息
docker images:列出本地映像
docker serach 镜像名:搜索某个镜像具体信息
docker pull 镜像:版本:拉去镜像信息,不带版本的话,默认拉最新版本
docker ps -a:查看当前运行的容器
docker logs 容器名:查看容器运行中出现问题日志
docker exec -it 容器名 bash:进入容器主目录进行操作
docker inspect 容器名:查看容器的具体信息
docker start/stop/restart/rm 容器名:容器的启动/停止/重启/删除操作

安装安成后我们就开始在docker中部署nginx、mysql、php环境(我是逐个进行配置安装的)

  1. nginx的安装配置(最新版本,1.19.0)
    (1)拉取镜像文件,运行命令 docker pull nginx
    (2)拉取完成后运行docker images可以看到刚拉取下来的映照文件
    (3)先建立一个映照目录来放置nginx的配置信息以及相应的日志信息,这样可以避免每次都要进入到nginx容器中进行配置修改,我创建了/data/nginx/conf、/data/nginx/www、/data/nginx/log三个目录
    (4)可以将本机的nginx配置信息nginx.conf复制一份到/data/nginx/conf目录下,同时可以对service信息进行配置,将根目录配置到/ect/nginx/html,在这个目录下放一个可访问的index.html文件来做测试用
    (5)运行启动nginx的命令:docker run -p 80:80 –name nginx -v /data/nginx/conf:/etc/nginx -v /data/nginx/log:/var/log/nginx -v /data/nginx/www:/etc/nginx/html -d nginx
    (6)运行完成后,docekr ps -a即可查看是否处于运行中
    (7)注意事项:我用的是80端口,所以我事先把本机运行的nginx服务停掉了(也可以映射到其他端口监听的),上面的–name是给容器命名,-v是本地目录跟容器中的配置信息进行映射

2.php环境配置(7.2版本,跟我原来的版本保持一样)
(1)docker pull php:7.2
(2)docker run -p 9000:9000 –name php -v /data/nginx/www:/etc/nginx/html -d php:7.2
(3)这里要在nginx中配置php的信息,以下为我的个人配置

server
   {
       listen 80;
       server_name  localhost;

       root /etc/nginx/html;
       index  index.html index.htm  index.php;
        location / {

            try_files $uri  /new_test/public/index.php?$query_string;
        }


         location ~ \.php$ {
            fastcgi_pass   172.17.0.3:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /etc/nginx/html/$fastcgi_script_name;
            include        fastcgi_params;
        }

        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;

   }

这里讲下php的配置信息需要做一定的修改,首先是fasctcgi_pass的代理路径,正常我们是本地127.0.0.1,这里要改为容器的ip地址,查看容器ip地址的方式有两种,可以通过docker inspect 容器名,出现信息中IPAddress为容器ip,二是直接运行docker inspect –format=’{{.NetworkSettings.IPAddress}}’ 容器名也可以看到;另一个就是fastcgi_param文件地址,我这里把根目录直接替换为我的文件根目录/etc/nginx/html,其他就没什么特别的了;

3.mysql配置(5.7版本)
(1) docker pull mysql:5.7
(2) docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -it mysql:5.7
(3) 同样安装完成后项目中配置mysql的地址时需要查看容器的ip,配置容器ip而不是本地ip127.0.0.1

4.到这里环境基本配置完成了,要运行laravel项目的话,在/data/nginx/www/目录下建立项目,并且在nginx文件中配置路径即可,配置完成后就可以正常访问了。

5.容器的迁移,我们在服务器上配置的环境信息是可以直接将镜像文件迁移到其他服务器上配置运行的,使用docker_hub,https://hub.docker.com/, 在官网注册用户名,本地登陆后,可以在镜像文件重命名并上传,其他服务器登陆同样的用户名后pull下来即可,具体操作官网也有详解介绍,不展开。

6.最后总结下一些问题,以上讲的可能比较简陋,有问题可以评论区一起探讨。
(1)docker ps -a查看容器进程时,如果容器没有处于运行状态,而是exited状态的话,可以运行docker logs 容器名查看出现的问题
(2)如果需要安装php的扩展的话,用docker exec -it php(容器名) bash 进入容器中,正常是进入到/usr/local/bin目录下,使用docker-php-ext-install pdo pdo_mysql命令,上面这个命令是安装mysql扩展的,需要安装了这个扩展项目才能连接使用mysql。该目录下的几个命令可以上官网查看详细使用教程。

7.目前想到的就大概上面这些,如果有其他问题再行补充,知识有限,写的比较简略,码字不易,路过的话给个赞哈,谢谢大家!

本作品采用《CC 协议》,转载必须注明作者和本文链接
迷茫但不退却
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!