安装Docker
在官方网站直接下载符合你操作系统的版本,安装即可。由于国内的网络下载Docker镜像实在是太慢,我们不妨使用国内的加速服务,教程可以参见:https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html
Nginx
首先,我们先拉取一个Nginx镜像,很简单:
docker pull nginx
使用docker images
查看一下我们刚刚拉取下来的镜像
实例化该镜像,我们把实例化的镜像称之为容器,镜像和容器的关系就好比类和实例的关系。
//-p 是指定本机端口到容器端口
//其中8080是指主机的端口,而80是指容器的端口
docker run -p 80:8080 nginx
//具体细节可输入docker run --help查询
我们先看一下端口的状态
netstat -na|grep 8080
或者通过 docker port name 查看端口信息
Nginx容器启动之后,访问localhost,熟悉的欢迎页面出现了吧,不用我们下载,编译,安装,直接实例化然后启动就好了,多么让人幸福的一件事。
浏览器访问
切回命终端,发现终端打印出了一堆log信息,我可不想整天盯着这些无趣的信息看,让Nginx进入守护运行吧。
docker run -p 80:8080 --name cool_nginx -d nginx
//-p是端口参数,给上-d参数表示容器是守护程序会进入后台运行,--name则是重新给容器命名。成功之后,用docker ps来查看当前已经启动的容器。
现在我们进入这个容器,并修改这个Nginx默认网页。
//frosty_bose 为容器名称 可通过docker ps 查询
docker exec -it frosty_bose bash
echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
挂载一个本地目录到容器,就不用每次都进入到容器中修改代码了,当然的将E:\project\maibuapi\public替换成你自己的文件目录。
docker run -p 8080:80 -v E:\project\maibuapi\public:/usr/share/nginx/html/ -d nginx
PHP
docker pull php:7.2-fpm
使用7.2版本的PHP,你可以选择其他版本的PHP。
docker run --name liang_php -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm
使用docker ps可以看到,Nginx和FPM都已经启动了。
那么PHP如何和Nginx链接起来呢?很简单,Docker为我们做好了一切,只需要一个参数就可以将两个容器链接起来。
--link cool_php_fpm
我们都知道,Nginx默认是不解析PHP文件的,所以还需要修改一下配置,不需要进入Nginx容器里去修改,我们在当前文件夹下,新建一个default_nginx.conf文件,写入如下内容:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php?$ {
fastcgi_pass liang_php:9000;
#和别名保持统一
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
然后用docker rm nginx
命令删除掉原先的Nginx容器,挂载该配置文件重新实例化:
docker run -p 8080:80 --name liang_nginx -d -v E:\project\Docker\test:/usr/share/nginx/html/ -v E:\project\Docker\test\default_nginx.conf:/etc/nginx/conf.d/default.conf:ro --link liang_phpnginx
创建php文件
<?php
echo phpinfo();
mysql
//默认为8版本会出现密码问题
docker pull mysql
然后启动:
docker run -d --name liang_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
-e
参数是给给定环境变量,这里我们设定MySQL的密码是123456
。
链接到MySQL容器:docker exec -it liang_mysqlbash
登陆MySQL:mysql -uroot -p123456
PHP如何链接到MySQL,相信你也知道了,对的还是使用–link参数,我们删除掉colphp容器,重新构建
docker run --name colphp --link coolmysql -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm
链接之后,PHP容器和MySQL容器能够通信了,但是还是不够呢(坚持一下,最后一步了),初始PHP是没有安装MySQL扩展的,安装扩张也极其容易,先进入到PHP容器:docker exec -it colphp bash
然后用docker-php-ext-install
命令安装:docker-php-ext-install mysqli exit
ok,我们重启PHP容器:docker restart colphp
docker-compose
还在研究中。。。。。。github地址