docker部署web项目需要用到几个服务:php,nginx,mysql
docker下载镜像速度太慢的话需要修改一下配置 主要是因为国家把docker国外镜像hub封掉了,导致镜像pull不下来,为此,改用国内的镜像
# cat /etc/docker/daemon.json
{"registry-mirrors": [""]
}
sudo systemctl daemon-reload//重新加载
sudo systemctl restart docker//重启
docker pull nginx
创建一个nginx容器
docker run --name nginx-test -p 8080:80 -d nginx
参数说明
docker pull php:5.6-fpm
docker run --name myphp-fpm -v ~/nginx/www:/www -d php:5.6-fpm
--name myphp-fpm : 将容器命名为 myphp-fpm。
-v ~/nginx/www:/www: 将主机中项目的目录 www 挂载到容器的 /www
创建 ~/nginx/conf/conf.d目录:
mkdir ~/nginx/conf/conf.d
在该目录下添加 ~/nginx/conf/conf.f 文件,内容如下:
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}location ~ .php$ {fastcgi_pass php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;include fastcgi_params;}
}
配置文件说明:
启动 nginx:
docker run --name runoob-php-nginx -p 8083:80 -d -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link myphp-fpm:php nginx
接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下:
<?php
echo phpinfo();
?>
可选版本 不然就是最新版 例如mysql:5.7.9
docker pull mysql
docker run -itd --name mysql-test --link myphp-fpm:phpfpm --link runoob-php-nginx:nginx -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
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进入容器的命令行。
#主机中
#如果之前启用了gd,需要先在php.ini文件中注释掉extension=gd.so并重启容器
docker exec -it <容器ID或容器名称> /bin/bash #进入php容器
cd /usr/local/bin
ls
docker-php-ext-install pdo_mysql
php -m cd /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
ls
cd /usr/local/etc/php
cd conf.d
ls
cat docker-php-ext-pdo_mysql.ini
安装成功,退出docker,重启docker docker restart php
项目内部连接MySQL用的host是容器内部IP
docker inspect 容器id
本文发布于:2024-02-03 06:28:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170691293449251.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |