前言
接下来的我们用简单的方式来部署以下 web应用的三个常用环境。都是基于docker-hub库
首先在/home目录下创建一个lnmp目录存放接下来的三个环境相关的文件,再创建一个 www的工作目录放置我们的php文件
部署php
> docker run -p 9000:9000 --name myphp -v /home/www:/home/www -w /home/www -d php:7.4-fpm
部署nginx
> docker run --name mynginx -p 8080:80 -v /home/www:/home/www -w /home/www -v /home/lnmp/nginx/conf.d:/etc/nginx/conf.d:ro -d --link myphp:php nginx
在/home/lnmp/nginx/conf.d 目录下创建default.conf 文件。default.conf的默认配置在下方
参数说明:
-p 端口指定
--name 给容器命名
-v 数据卷挂载 宿主机:容器 // 挂载小知识如果想挂载宿主机当前目录下可以使用 $PWD/www
-w 设置工作目录
-d 后台运行
--link 被链接容器名:重新命名 链接两个容器并且互相通信
default.conf 参考
server {
listen 80;
server_name localhost;
root /home/www;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass php:9000; # 这里的php 就是 --link myphp:php 这个重新命名的php
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意–link最好使用 命名,要不然我们就需要 通过命令去查找容器的ip了
docker inspect 容器名/id | grep “IPAddress”
结果
>$root@VM-8-11-ubuntu:/home# docker run -p 9000:9000 --name myphp -v /home/www:/home/www -w /home/www
-d php:7.4-fpm
a9b8e356560c522547d93f4ff6a4aee5c6c5a91c0e9373e9dc90a93365a048a4
> $root@VM-8-11-ubuntu:/home# docker run --name mynginx -p 8080:80 -v /home/www:/home/www -w /home/www
-v /home/lnmp/nginx/conf.d:/etc/nginx/conf.d:ro -d --link myphp:php nginx
84c701b27f2c07fb3a154f089d237c94b16d49e0fc48288876262d3a4b532572
> root@VM-8-11-ubuntu:/home/www# vim index.php // 创建index.php 打印一个hello world 测试
这时可以看到已经 nginx 和 php 已经连接成功了
部署MySQL
docker run --name mymysql -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
总结
通过上面的三个命令,我们就可以将这三个环境搭建好啦。不过有三点要注意的
- 像mysql这种数据库的数据,我们最好挂载到我们的宿主机,这样就算容器挂了,数据还不会丢失
- 我们尽量将容器内的配置文件挂载到宿主机,这样改容器时就不用进入到容器中了
- –link这个命令时我们暂时采用的,我们也可以用 --network 去解决
下一期我们就来好好讲讲 dockerfile 重中之重的内容