macOs安装docker且在docker上部署nginx+php

打印 上一主题 下一主题

主题 980|帖子 980|积分 2940

一 环境



  • 系统:macOS Sonoma 14.6
  • 芯片:Apple M3
  • docker 版本:27.2.0
二 软件安装

 2.1 docker下载:

Get Started | Docker进入官网,如图位置,点击mac版本的docker下载.



根据你电脑芯片范例来选择下载的版本
2.2 安装



我们打开Docker应用步伐后,会有一些选择配置,我们按照如下配置即可。
这里我们选择 Accept

选择默认配置就行,Docker 会主动设置一些大多数开辟人员必要的配置。


这里可以选择直接跳过



出现以上的图标即可
到这里并没有正真的完成
2.3 版本查询以及问题处置处罚

  1. docker --version
  2. Docker version 27.2.0, build 3ab4256
复制代码
问题一 :如果输入这样命令出现以下情况,那么你就要去办理这些问题
  1. docker --version
  2. zsh:command not found:docker
复制代码
那么应该怎么处置处罚
那么你就要
  1. cat ~/.zshrc
复制代码
看看你的环境变量文件里面有没有docker

如果红色框内没有,那么依次执行
  1. echo 'export PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH' >> ~/.zshrc
复制代码
  1. source ~/.zshrc
复制代码

三 部署nginx和php

 3.1 安装nginx

  1. sudo docker pull nginx
复制代码
问题二  
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
为啥出现以上问题,因为没有配置国内镜像所以很容易导致链接失败
所以如今要配置国内镜像


进入该目录
然后找到daemon.json       

进入改文件,然后将圈出来的编辑放入这个文件
  1. "registry-mirrors": [
  2.             "https://docker.211678.top",
  3.             "https://docker.1panel.live",
  4.             "https://hub.rat.dev",
  5.             "https://docker.m.daocloud.io",
  6.             "https://do.nark.eu.org",
  7.             "https://dockerpull.com",
  8.             "https://dockerproxy.cn",
  9.             "https://docker.awsl9527.cn"
  10.       ]
复制代码
添加完后重启docker软件
命名、指定端口并运行nginx
  1. sudo docker run --name mynginx -p 8080:80 -d nginx
复制代码
  --name mynginx 指定当前容器名称为 mynginx
  -p 8080:80 将容器的 80 端口映射到主机的 8080 端口
  -v ~/project/www:/usr/share/nginx/html 将主机的 ~/project/www 目录挂载到容器的 /www
  -v ~/project/nginx/conf.d:/etc/nginx/conf.d 将主机的 ~/project/nginx/conf.d 目录挂载到容器的 /etc/nginx/conf.d
  --link myphp:php 将 myphp 容器的网络并入 nginx 容器,实现容器间的通讯
  如果想将docker内的文件与docker外的文件相干关联
那么你可以在当地文件夹中创建对应文件
  1. mkdir -p ~/project/nginx/www ~/project/nginx/logs ~/project/nginx/conf
复制代码
  www是项目路经
  logs是nginx错误日志
  conf 是nginx配置文件
  

可以看见nginx正常运行
接下来复制docker容器终端配置文件到宿主中
输入(ce1e83caf65f这个在上图查看安装中可见到)
  1. docker cp ce1e83caf65f:/etc/nginx/nginx.conf ~/project/nginx/conf
复制代码
可以查看一下原配置信息

接下来再运行一个新的(删除原来创建的nginx),前面是测试(开一个新的必要修改端口号和名字),输入如下:
  1. docker run -d -p 8082:80 --name mynginx2 -v ~/project/nginx/www:/usr/share/nginx/html -v ~/project/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/project/nginx/logs:/var/log/nginx nginx
复制代码
进入www创建
  1. cd ~/project/nginx/www
  2. vim index.html
  3. #写一个hello world
  4. <DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8">
  8. <title>my test docker</title>
  9. </head>
  10. <body>
  11. <h1>hello world</h1>
  12. </body>
  13. </html>
复制代码
在网页上输入http://localhost:8082/index.html,就能看到hello Wrold


3.2 安装php

输入命令拉取PHP镜像
  1. sudo docker pull php:8.0-fpm
复制代码
命名并挂在
  1. sudo docker run --name myphp -v ~/project/nginx/www:/www -d php:8.0-fpm
复制代码

配置conf文件
  1. mkdir ~/project/nginx/conf/conf.d
  2. vim ~/project/nginx/conf/conf.d/code-php.conf
复制代码
编辑写入配置:
  1. server {
  2.     listen       80;
  3.     server_name  localhost;
  4.     location / {
  5.         root    /usr/share/nginx/html;         
  6.         index  index.html index.htm index.php;
  7.     }
  8.     error_page   500 502 503 504  /50x.html;
  9.     location = /50x.html {
  10.         root   /usr/share/nginx/html;
  11.     }
  12.     location ~ \.php$ {
  13.         fastcgi_pass   php:9000;
  14.         fastcgi_index  index.php;
  15.         fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
  16.         include        fastcgi_params;
  17.     }
  18. }
复制代码
接下来可以把前面的nginx停掉,重新运行一个并把PHP接起来
  1. docker run --name mynginx-php -p 8081:80 -d -v ~/project/nginx/www:/usr/share/nginx/html:ro -v ~/project/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link myphp:php nginx
复制代码
接下来编写一个index.php
  1. <?php
  2. phpinfo();
  3. ?>
复制代码
在网址输入http://localhost:8081/index.php
我绑定的是7.4,所以显示的是7.4


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表