docker部署web项目需要用到几个服务:php,nginx,mysql
docker下载镜像速度太慢的话需要修改一下配置 主要是因为国家把docker国外镜像hub封掉了,导致镜像pull不下来,为此,改用国内的镜像
sudo systemctl daemon-reload//重新加载
sudo systemctl restart docker//重启
创建一个nginx容器
参数说明
- --name nginx-test:容器名称。
- -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d nginx: 设置容器在在后台一直运行。
-
--name myphp-fpm : 将容器命名为 myphp-fpm。
-
-v ~/nginx/www:/www: 将主机中项目的目录 www 挂载到容器的 /www
创建 ~/nginx/conf/conf.d目录:
在该目录下添加 ~/nginx/conf/conf.d/runoob-test-php.conf 文件,内容如下:
配置文件说明:
- php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
- /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。
启动 nginx:
- -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
- ~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
- ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
- --link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下:
可选版本 不然就是最新版 例如mysql:5.7.9
1.–link phpfpm:phpfpm
将此容器与phpfpm通过网络连接起来,这样在nginx容器里就可以访问到phpfpm容器里提供的phpfpm服务。
2.–link runoob-php-nginx:nginx
将此容器与nginx容器通过网络连接起来,在nginx容器以后即可以通过主机名访问到mysql容器进行链接数据库操作。
3.-e MYSQL_ROOT_PASSWORD=123456
设置mysql的root用户密码为123456
4.-p 3306:3306
映射容器端口
进入容器
docker exec -it mysql-test bash
登录mysql
mysql mysql -u root -p
要想让容器内部项目连上mysql,要给容器内php安装拓展
主机中执行docker exec -it <容器名 or id> /bin/bash进入容器的命令行。
安装成功,退出docker,重启docker docker restart php
项目内部连接MySQL用的host是容器内部IP
docker inspect 容器id