首页
社区
课程
招聘
[原创]Docker Compose快速构建LNMP笔记
发表于: 2020-10-13 23:24 2231

[原创]Docker Compose快速构建LNMP笔记

2020-10-13 23:24
2231

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/
├── data                        数据库数据目录
│   ├── esdata                  ElasticSearch 数据目录
│   ├── mongo                   MongoDB 数据目录
│   ├── mysql                   MySQL8 数据目录
│   └── mysql5                  MySQL5 数据目录
├── services                    服务构建文件和配置文件目录
│   ├── elasticsearch           ElasticSearch 配置文件目录
│   ├── mysql                   MySQL8 配置文件目录
│   ├── mysql5                  MySQL5 配置文件目录
│   ├── nginx                   Nginx 配置文件目录
│   ├── php                     PHP5.6 - PHP7.3 配置目录
│   ├── php54                   PHP5.4 配置目录
│   └── redis                   Redis 配置目录
├── logs                        日志目录
├── docker-compose.sample.yml   Docker 服务配置示例文件
├── env.smaple                  环境配置示例文件
└── www                         PHP 代码目录

快速使用

如果当前用户不是root,为了避免频繁输入root密码,需要将当前用户加入docker组

1
2
3
4
5
6
# 创建Docker组  注:安装Docker时就自动创建了,如果没有则手动创建
$ sudo groupadd docker
# 当前用户加入Docker组
$ sudo gpasswd -a ${USER} docker
# 将当前用户的group切换到docker用户组
$ newgrp docker

Clone项目

1
$ gh repo clone achuanya/dnmp

拷贝文件

1
2
3
4
5
6
7
$ cd dnmp
# 复制环境变量文件
$ cp env,sample .env
# 复制docker-compose配置文件
$ cp docker-compose.sample.yml docker-compose.yml
# 创建并后台运行
$ docker-compose up -d

PHP与扩展

切换Nginx使用的PHP版本

1.比如,从php切换到php56,那就先在docker-compose.yml文件中查看PHP56有没有被注释掉,删掉注释后启动,再更改Nginx配置文件:

1
2
3
fastcgi_pass   php:9000;
更改为:
fastcgi_pass   php56:9000;

其中phpphp56docker-compose.yml文件中容器的NAME名称

 

2.让其配置生效还需再重新加载Nginx配置文件

1
$ docker exec -it nginx nginx -s reload

这里有两个Nginx,第一个是容器NAME名称,第二个是容器中的Nginx程序

在宿主机安装PHP扩展

1.如果要安装更多PHP扩展,在根目录找到.env环境配置文件,如以下PHP扩展配置

1
2
# 安装扩展应当使用英文逗号隔开
PHP56_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache,redis

2.保存完成后,重新构建镜像

1
$ docker-compose build php

在Docker中安装扩展

1
2
3
$ docker exec -it php /bin/sh
# 安装redis扩展
$ install-php-extensions redis

支持安装扩展列表

此扩展来自Michele Locati,请前往查看最新支持的PHP扩展

  • https://github.com/mlocati/docker-php-extension-installer

在宿主机中使用命令行

PHP CLI

1.参考根目录bash.alias.sample示例文件,将PHP CLI函数拷贝到/etc/profile系统环境变量文件

1
2
# 刷新系统环境变量
$ source /etc/profile

2.在宿主机中执行PHP命令了

1
2
3
4
5
6
7
8
9
10
11
12
13
~ [06:24:00]
achuan$ php -v
PHP 7.4.7 (cli) (built: Jun 11 2020 19:07:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.7, Copyright (c), by Zend Technologies
 
 ~ [06:24:04]
achuan$ php56 -v
PHP 5.6.40 (cli) (built: Jan 31 2019 01:30:45)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Composer

1.首先确定Composer缓存目录,Composer配置文件在根目录中的data/composer

 

2.参考根目录bash.alias.sample示例文件,将PHP CLI函数拷贝到/etc/profile系统环境变量文件

1
2
# 刷新系统环境变量
$ source /etc/profile

3.之后就可以在宿主机使用Composer命令了

1
2
3
$ cd /work/dnmp/www
$ composer -V
Composer version 1.10.13 2020-09-09 11:46:34

4.第一次使用Composer后data/composer目录下会生成config.json全局配置文件,可指定镜像,例如中国全量镜像:

1
2
3
4
5
6
7
8
9
{
    "config": {},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
}

或使用命令修改Composer的全局配置文件

1
$ composer config -g repo.packagist composer https://packagist.phpcomposer.com

管理命令

容器的创建、启动与构建

1
2
3
4
5
6
7
8
9
10
11
12
$ docker-compose
    up # 创建并且启动所有容器
    up -d # 创建并且后台运行所有容器
    up nginx php mysql # 创建并且启动多个容器
 
    start # 启动容器
    stop # 停止容器
    restart # 重启容器
    build # 构建容器
 
    rm # 停止并且删除容器
    down # 停止并且删除容器、网络、图像与挂载卷

快捷命令

1.参考根目录bash.alias.sample示例文件,将Composer函数拷贝到/etc/profile系统环境变量文件

1
2
# 刷新系统环境变量
$ source /etc/profile

2.例如,进入php容器

1
$ dphp

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//