下载所需镜像
docker pull mysql:5.7
docker pull php:7.2-fpm
docker pull nginx:1.12.2
创建并启动mysql
docker run -d -p 3307:3306 -v ~/mydocker/lnmp/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name docker_mysql mysql:5.7
参数说明
-d 让容器在后台运行
-p 添加主机(3307) 到容器的端口(3306) 映射
-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置
–name 容器的名字(docker_mysql),随便取,但是必须唯一
-v 添加目录映射,防止mysql容器被删除后数据丢失
创建并启动php-fpm
docker run -d -v ~/mydocker/lnmp/html:/var/www/html -p 9000:9000 --link docker_mysql:mysql --name docker_phpfpm php:7.2-fpm
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,即主机上的~/mydocker/lnmp/html和容器中/var/www/html目录是同步的
–name 容器的名字(docker_phpfpm)
–link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。与docker_mysql建立联系并取名为mysql
这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。
安装必要的扩展
进入容器:docker exec -it docker_phpfpm /bin/bash
php -m查看扩展模块
root@acc876910acf:/var/www/html# php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
安装:docker-php-ext-install pdo_mysql
退出容器 exit
停止容器:docker stop docker_phpfpm
提交:docker commit <容器ID> <NAME/VERSION>
docker commit acc876910acf myphp:7.2-fpm
查看:docker images 镜像会多一个
创建并启动nginx
docker run -d -p 80:80 -v ~/mydocker/lnmp/html:/var/www/html -v /Users/wangwei/mydocker/lnmp/nginx/sites.conf:/etc/nginx/conf.d/sites.conf --link docker_phpfpm:phpfpm --name docker_nginx nginx:1.12.2
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意
–name 容器的名字
–link 与另外一个容器建立起联系
配置lnmp 修改Nginx 的配置文件,使他支持php
server {
listen 80;
server_name localhost;
root /var/www/html;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_pass phpfpm:9000; //phpfpm为关联的php-fpm容器的别名,这里也可以用ip,也可以用容器的唯一 ID
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}