mac上docker安装nginx,php,mysql

在mac上安装docker-nginx

 docker pull nginx 
 docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:rw -v $PWD/logs:/wwwlogs:rw  -d nginx  
rw 读写
ro 只读


会报下面这个问题:
在这里插入图片描述
因为不能挂载不存在的文件,但是可以挂载不存在的目录。我们挂载的 nginx.conf 文件 是需要 提前编写好的。

详细说明请参考Docker volume 挂载时文件或文件夹不存在

nginx镜像在docker-hub上有详细的使用介绍:
在这里插入图片描述
以上说明的大致内容是:
1.配置文件可以根据 官方文档编写
2.如果想使用默认配置,可以创建一个临时实例,copy配置文件后,再使用配置文件运行新的镜像去挂载配置文件
3.或者使用Dockerfile 直接从 nginx镜像 copy配置文件
4.如果Dockerfile文件包含"CMD"命令,要确保带有参数 “-g daemon off” . 否则容器会启动后立即停止(docker运行nginx为什么要使用 daemon off

所以先在一个test容器中复制一份配置文件。先复制nginx.conf

docker run --name test -d nginx
docker cp test:/etx/nginx/nginx.conf ./nginx/conf/

如果不知道配置文件的存放目录,可以进去容器查看一下。

docker exec -it test /bin/bash

再运行

docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:rw -v $PWD/logs:/wwwlogs:rw  -d nginx 

docker ps  

可以看到成功启动docker-nginx

在这里插入图片描述

根据刚才的启动挂载,查看nginx.conf 文件, 会有【 include /etc/nginx/conf.d/*.conf;】 ,所以也应该挂载conf.d目录到宿主机上。
在这里插入图片描述

复制目录到挂载目录下

docker cp mynginx:/etc/nginx/conf.d  ./conf/conf.d

重新挂载目录:

docker stop mynginx
docker rm mynginx
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/conf.d:/etc/nginx/conf.d -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:rw -v $PWD/logs:/wwwlogs:rw  -d nginx

修改conf/conf.d/default.conf 文件的root, 指向docker内挂载的目录,方便本地文件同步。
在这里插入图片描述
登录docker

docker exec -it mynginx /bin/bash

可以观察在宿主机修改挂载目录的文件,docker对应的也会同步文件。



docker-php 安装

docker search php
docker search php-fpm
搜索出不同的结果,尝试了下载最新的php:latest 版本, 运行后就退出。

docker run -p 9000:9000 --name  myphpfpm -v  $PWD/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs  -d  php:latest

然后选用php-fpm 【具体区别尚不清楚】

docker run -p 9000:9000 --name  myphpfpm -v  $PWD/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs  -d  bitnami/php-fpm:latest

修改nginx配置文件(IP 是docker-php的IP),重启
在这里插入图片描述
在宿主机挂载的www目录下,创建index.php文件
在这里插入图片描述
即可成功访问php文件。



docker实例随docker启动

重启docker,运行的实例都会关闭,需要一个一个手动运行。

docker update --restart=always mynginx

再次重启docker,实例会跟随一起启动。



【待处理】 重启docker,实例的IP地址会变更,需要重新配置IP地址。



编写php文件, 会发现更新总是有缓存延时。
原因是 docker-php 开启了 opcache ,
使用 opcache_get_status() 可以查看缓存情况。
调试代码时,可以关闭opcache, 或者 调用 opcache_reset() 函数「需要等待上一个缓存失效」;



docker-mysql 安装

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

docker exec -it mymysql /bin/bash  #终端登录msyql

-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

在这里插入图片描述

在这里插入图片描述
使用代码连接不上数据库,需要执行下面命令
命令行进入mysql 终端,
use mysql ,

use mysql ;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

给docker固定IP

docker network ls
docker inspect bridge

# 创建新的网络
docker network create --subnet=172.18.0.0/16 mynetwork

# 重新创建docker,指定IP
docker run -p 9000:9000 --name  myphpfpm  --net mynetwork --ip 172.18.0.2   -v  $PWD/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs  -d  bitnami/php-fpm:latest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值