docker dnmp安装使用

旧时模样 提交于 2020-04-05 15:40:25

本次介绍会省去很多docker的基础知识,如有需要,请自行百度(Google)。只会介绍一些基本的概念和具体的操作过程。

docker-compose

compose  项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

—— 《Dokcer 从入门到实践》

它的主要作用是运行多个 Docker 容器的应用。比如:LNMP —— 我们使用Docker来安装,NginxPHPMySQL都单独启动一个容器(docker ps查看容器的运行详情),假如电脑关机了,你需要重启 LNMP 环境,你需要将其逐个运行。如下命令:

# 启动 Nginx
$ docker run --name runoob-nginx-test -p 8081:80 -d nginx

# 启动php
$ docker run --name  myphp-fpm -v ~/nginx/www:/www  -d php:5.6-fpm

# 启动 MySQL
$ docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

结果不言而喻,非常的繁琐,那么简化这个工作就变得非常有必要了。

 compose 就是用来干这个事情的。体验一下:

# 进入 docker-compose 的项目目录,根据你项目的不同而不同
$ cd ~/dnmp 
# 启动 l(d)nmp 环境
$ docker-compose up -d 

可以看到,操作简单很多。

在 mac 下安装   Docker    docker-compose  默认会安装。

docker-compose 的常用命令

命令 解释
docker-compose up 启动或者创建容器
docker-compose start\ stop\ restart [容器] 启动、停止、重启服务(比如Nginx)
docker-compose ps 列出容器列表
docker-compose down 停止并删除容器、镜像等
docker-compose exec [service] sh/bash 进行运行的容器内部(linux)
docker-compose logs [容器] 查看容器的运行日志

DNMP

DNMP中的 D —— Docker。

为了方便,也为了不去深入研究 Dockerfile,我们直接使用别人写好的文件。

github 地址:https://github.com/yeszao/dnm...

github 上的 readme 文件已经能够入门了。我就不再赘述了,这里只做几点说明。

补充

  1. DNMP中有两个 docker-composer.yml,其中一个*-full.yml 囊括了 PHP 开发很多套件,有很多在我们的项目中使用不上;另一个是*-simple.yml,只包含了NginxPHP 7.2MySQL,建议使用它,比如还需要 Redis 可以直接去*-full.yml复制相关的配置即可。
  2. DNMP 通过配置文件方式来管理的,配置文件在.env 文件中,所有服务(nginx、php等)的配置文件在 config目录下,可自行修改。
  3. PHP 默认已经开启的 php 扩展只有pdo_mysql\nmysqli\nmbstring\ngd\ncurl\nopcache(.env PHP72_EXTENSIONS 有说明),如需要其他扩展可以参见 extensions/php72.sh 文件,所有安装的扩展都在此。如果需要安装其他扩展也需要修改 .envextensions/php72.sh文件(可见『安装 yar 扩展』)。

DNMP 中 php 默认安装的扩展:

  1. mcrypt
  2. mysql
  3. event
  4. sodium
  5. mongodb
  6. yaf
  7. amqp
  8. redis
  9. memcached
  10. xdebug
  11. swoole
  12. pdo_sqlsrv
  13. sqlsrv
需要以上扩展,只需要在   .env  文件找那个指定即可。

安装 yar 扩展

  1. 修改 shell 文件,在 extensions/php72.sh 文件中添加一下内容:
if [ -z "${EXTENSIONS##*\nyar\n*}" ]; then
    echo "---------- Install yar ----------"
    pecl install yar
    docker-php-ext-enable yar
fi
  1. 修改 .env 文件
...
PHP72_EXTENSIONS=pdo_mysql\nmysqli\nmbstring\ngd\ncurl\nopcache\nyaf\nyar
...
  1. 重新构建容器
$ docker-composer build # 一定得在 docker-compose.yml 所在目录执行,可以加上 php,重新构建 php 容器
当修改了   Dockerfile  文件后,都需要重新构建容器
  1. 启动容器
$ docker-compose up -d
如果需要深度定制,还是看下   Dockerfile  规则的。

 

搭建项目开发环境

1 在项目www目录下拉取项目git代码   复制env  composer update

cp /app/wenbatest/fudao_crm/.env ./fudao_crm 
composer update

2 复制nginx配置文件  cp /usr/local/etc/nginx/servers/wenba.conf ./services/nginx/conf.d/ 

3  重启nginx服务

docker exec -it nginx nginx -s reload   

server {

    if ($http_trace = '') {
        set $http_trace 0;
    }
    if ($http_logid = '') {
        set $http_logid $msec;
    }

    listen       80;
    server_name  qa03-transaction.xuebadev.com;
    root   /www/service_transaction/public;
    index  index.php index.html index.htm;
    #charset koi8-r;

    access_log  /var/log/nginx/nginx.transaction.access.log main;
    error_log   /var/log/nginx/nginx.transaction.error.log  notice;
    
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ /image/upload/other/ {
        rewrite  /image/upload/other/(.*)  http://106.75.63.51:7777/image/upload/other/$1 break;
    }
    location ~ /question_bank/ {
        rewrite  /question_bank/(.*)  https://wb-qb-qiniu.xueba100.com/question_bank/$1 break;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        include        fastcgi-php.conf;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

问题:项目用的是laravel框架 配置完以后访问接口一直报404  好一顿调试  主要就是改try_files

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!