系统环境:配好网络的虚拟机 CentOS 7
Docker的安装和启动命令
wget -qO- https://get.docker.com | sh #安装docker
sudo usermod -aG docker king #指定用户可操作docker
sudo service docker restart #重启docker
先从仓库拉取一个MySql的镜像
docker pull mysql:5.7
通过命令 docker images 查看拉取到本地的镜像
启动一个容器,通过以下命令
docker run -d -p 6603:3306 -e MYSQL_ROOT_PASSWORD=123456 --name king_mysql mysql:5.7
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置
–name 容器的名字,随便取,必须唯一
ps:可以仅使用docker run命令就行了。docker run会先去pull,然后再create。先把镜像pull下来,在run的时候会很快。
通过命令docker ps -a 查看刚刚创建的容器,容器状态的Up状态,表示容器正在运行,并且可以看到主机和容器的端口映射关系。
进入到刚刚创建的容器中
首先要进入容器内部
docker exec -it 容器名或容器ID
docker exec -ti king_mysql /bin/bash (进入容器)
tips:在容器内部(相当于一个轻量的虚拟机os)
这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
容器内安装vim:apt-get install vim
进入mysql
mysql -u root -p
授权 创建一个远程可以访问msyql的用户。
GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY “123456”;
flush privileges; // 刷新,使修改的内容生效
退出
exit #第一个exit退出mysql
exit #第二个exit退出容器的bash
参数说明
-t 在容器里生产一个伪终端
-i 对容器内的标准输入 (STDIN) 进行交互
验证操作一:【外网访问容器里的mysql,还是要通过主机的公网ip:port这种形式来访问】用Navicat连接主机(运行docker的虚拟机)刚配置好的MySQL,新建一个test数据和表,后续用来验证PHP连接数据库获取数据使用。
先拉取php-fpm的镜像
docker pull php:7.4-fpm
再创建一个phpfpm容器
docker run -d -v /home/works:/var/www/html -p 9000:9000 --link king_mysql:mysql --name king_phpfpm php:7.4-fpm
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,即主机上的/home/works和容器中/var/www/html目录是同步的
–name 容器的名字
–link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。
这里不指定–link参数也是可以,因为容器本身有唯一的IP,所以也可以用IP去访问容器。
进入容器,在/var/www/html目录下新建一个index.php文件(这是在容器内新建的文件)
touch index.php
用exit命令回到主机界面,访问主机上/home/works
在容器里的/var/www/html目录中新建的文件也在主机的/home/works目录中,因为在创建容器的时候把主机中的目录挂载到了容器中去了。
要使用pdo模块,所以需要安装pdo_mysql模块,在docker容器中可以这样安装
docker-php-ext-install pdo_mysql
通过命令php -m查看php所有已安装的扩展模块
验证操作二:PHP扩展模块虽安装了,但并没有启用。通过在phpfpm的容器中修改php.ini文件来修改PHP配置,vim /usr/local/etc/php/conf.d/php.ini (新安装可能没有此文件,重命名默认的配置文件即可),在配置文件里把需要打开的模块对应的配置行前面的分号去掉,保存退出!重启容器保证修改生效 ,命令: docker restart 容器ID
先从仓库拉取一个nginx镜像
docker pull nginx:1.16.0
接下来运行nginx容器
docker run -d -p 80:80 --name king_nginx -v /home/works:/var/www/html --link king_phpfpm --name king_nginx nginx:1.16.0
参数说明:
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,推荐nginx容器的根目录和php容器中根目录一样。如果不一样在配置nginx的时候需要注意
–name 容器的名字
–link 与另外一个容器建立起联系
进入nginx容器,修改nginx的配置文件让它支持php
docker exec -it king_nginx /bin/bash
参数说明
-t 在容器里生产一个伪终端
-i 对容器内的标准输入 (STDIN) 进行交互
在容器里找到nginx的配置文件,默认是在/etc/nginx目录下
location ~ \.php$ {
root /var/www/html;
fastcgi_index index.php;
fastcgi_pass phpfpm:9000;//这里改成--link进来的容器,也可以用php容器的ip
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;//如果根目录和php容器的根目录不一样,这里的$document_root需要换成php下的根目录,否则php找不到文件
include fastcgi_params;
}
最后,验证LNMP环境,在前面步骤的index.php文件中编写代码
<?php
try {
$con = new PDO('mysql:host=mysql;dbname=test', 'root', '123456');
$con->query('SET NAMES UTF8');
$res = $con->query('select * from test');
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
echo 'id:' . $row['id'] . ' - name:' . $row['name'] .' <br/>';
}
} catch (PDOException $e) {
echo '报错:' . $e->getMessage();
}
使用浏览器访问 【主机的ip】/index.php 看到正确的输出,就证明环境搭建成功了。
$con = new PDO(‘mysql:host=mysql;dbname=test’, ‘root’, ‘123456’);
这一行,当前换成mysql容器的ip也是一样的,可以通过dokcer inspect contanier_name|id来查看容器的有关信息, 不过只能在内网里面使用容器的ip。外网访问容器里的mysql,还是要通过主机的公网ip:port这种形式来访问。
————————————————
版权声明:本文为CSDN博主「-Scalpel-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40810012/article/details/114631164
1 . 容器内安装composer
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ #切换源
composer selfupdate #更新composer
composer -v
2 . 容器内安装软件
apt-get update
apt-get install vim
apt-get install zip unzip
3 . 域名配置
#宿主机nginx配置
server {
listen 80;
server_name xxx.tu-do.cn;
location / {
root /www/docker/xxx/public;
index index.php index.htm index.html;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
try_files $uri $uri/ /index.html;
}
}
#容器内nginx配置
server {
listen 80;
server_name xxx.tu-do.cn;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /var/www/html/xxx/public;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /var/www/html/xxx/public;
fastcgi_pass wdl_phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
有问题可在下方留言讨论,或者邮箱联系我,邮箱地址在网站下方。
转载无需和我联系,但请注明来自木点点博客http://www.tu-do.cn/
最新评论