Docker部署php环境运行web项目

阅读: 评论:0

Docker部署php环境运行web项目

Docker部署php环境运行web项目

docker部署web项目需要用到几个服务:php,nginx,mysql

docker下载镜像速度太慢的话需要修改一下配置  主要是因为国家把docker国外镜像hub封掉了,导致镜像pull不下来,为此,改用国内的镜像

# cat /etc/docker/daemon.json 
{"registry-mirrors": [""]
}

sudo systemctl daemon-reload//重新加载

sudo systemctl restart docker//重启 

 

安装nginx

docker pull nginx

创建一个nginx容器 

docker run --name nginx-test -p 8080:80 -d nginx

参数说明

  • --name nginx-test:容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行。

 安装php

docker pull php:5.6-fpm

创建一个php-fpm容器

docker run --name  myphp-fpm -v ~/nginx/www:/www  -d php:5.6-fpm

参数说明

  1. --name myphp-fpm : 将容器命名为 myphp-fpm。

  2. -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;}
}

 配置文件说明:

  • php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
  • /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。

启动 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
  • -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,代码如下:

<?php
echo phpinfo();
?>

安装mysql

可选版本 不然就是最新版   例如mysql:5.7.9

docker pull mysql

创建一个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小时内删除。

标签:环境   项目   Docker   php   web
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23