本次介绍会省去很多docker
的基础知识,如有需要,请自行百度(Google)。只会介绍一些基本的概念和具体的操作过程。
- docker 基础的参考:https://blog.csdn.net/S_gy_Ze...
- 参考书籍:https://yeasy.gitbooks.io/doc... (可以看前几章系统了解 Docker)
- 官网文档:https://docs.docker.com/
- 官方仓库:https://hub.docker.com/
docker-compose
compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。—— 《Dokcer 从入门到实践》
它的主要作用是运行多个 Docker 容器的应用。比如:LNMP
—— 我们使用Docker
来安装,Nginx
、PHP
、MySQL
都单独启动一个容器(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 文件已经能够入门了。我就不再赘述了,这里只做几点说明。
补充
DNMP
中有两个 docker-composer.yml,其中一个*-full.yml
囊括了PHP
开发很多套件,有很多在我们的项目中使用不上;另一个是*-simple.yml
,只包含了Nginx
、PHP 7.2
、MySQL
,建议使用它,比如还需要Redis
可以直接去*-full.yml
复制相关的配置即可。DNMP
通过配置文件方式来管理的,配置文件在.env
文件中,所有服务(nginx、php等)的配置文件在config
目录下,可自行修改。PHP
默认已经开启的 php 扩展只有pdo_mysql\nmysqli\nmbstring\ngd\ncurl\nopcache
(.env PHP72_EXTENSIONS 有说明),如需要其他扩展可以参见extensions/php72.sh
文件,所有安装的扩展都在此。如果需要安装其他扩展也需要修改.env
和extensions/php72.sh
文件(可见『安装 yar 扩展』)。
DNMP
中 php 默认安装的扩展:
- mcrypt
- mysql
- event
- sodium
- mongodb
- yaf
- amqp
- redis
- memcached
- xdebug
- swoole
- pdo_sqlsrv
- sqlsrv
需要以上扩展,只需要在
.env
文件找那个指定即可。
安装 yar 扩展
- 修改 shell 文件,在
extensions/php72.sh
文件中添加一下内容:
if [ -z "${EXTENSIONS##*\nyar\n*}" ]; then
echo "---------- Install yar ----------"
pecl install yar
docker-php-ext-enable yar
fi
- 修改
.env
文件
...
PHP72_EXTENSIONS=pdo_mysql\nmysqli\nmbstring\ngd\ncurl\nopcache\nyaf\nyar
...
- 重新构建容器
$ docker-composer build # 一定得在 docker-compose.yml 所在目录执行,可以加上 php,重新构建 php 容器
当修改了
Dockerfile
文件后,都需要重新构建容器
- 启动容器
$ 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
来源:oschina
链接:https://my.oschina.net/shunshun/blog/3217848