本文操作环境:macOS10.15系统、php7.4.5版,MacBook Air 2019电脑

Mac下Docker配置LNMP开发环境

前言:

1.Docker的标准用法是每个docker容器只提供一个服务。

所以应该是mysql单独一个容器,php-fpm单独一个容器,nginx单独一个容器。

2.Docker的设计理念是在容器里面不运行后台服务,容器本身就是宿主机上的一个独立的主进程,也可以间接的理解为就是容器里运行服务的应用进程。一个容器的生命周期是围绕这个主进程存在的,所以正确的使用容器方法是将里面的服务运行在前台。

1.安装Docker

下载安装

下载地址 https://www.92jzh.com /mac/stable/Docker.dmg

查看配置状态

docker info

2.配置安装环境

安装centos (可跳过)

查看镜像版本 https://hub.docker.com/_/centos?tab=tags

拉取镜像

docker pull centos:centos7.8.2003

docker images

建立容器

docker run -v https://www.92jzh.com /data:/docker_data -p 80:80 -itd --privileged=true centos:v0.0.1 /usr/sbin/init

// -v 挂载路径 本地/data挂载到容器的/docker_data路径

// -p 端口映射

// -i 允许你对容器内的标准输入 (STDIN) 进行交互

// -t 在新容器内指定一个伪终端或终端

// -d 在后台运行

// --privileged=true 以特权模式运行容器(可以运行后台服务)

查看容器

docker ps // -l 查看历史容器

进入容器

docker exec -it 46e9810a35e6 bash

更新镜像(提交容器副本)

docker commit -m "test update" 21e09cfcc692 centos:test

删除镜像

docker rmi centos:test

问题1:unable to remove repository reference "centos:test" (must force) - container 46e9810a35e6 is using its referenced image 5b5eb956a405

解决:查看并删除历史镜像

docker ps -l

docker rm 46e9810a35e6

安装Mysql5.7

拉取镜像

docker pull mysql:5.7

创建容器

docker run -p 3306:3306 --name mysql_test -v ~/Docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d --privileged=true mysql:5.7

命令说明

-p 3306:3306:将容器的3306端口映射到主机的3306端口

-v PWD/mysql/data:/var/lib/mysql:将主机当前目录下的mysql/data文件夹挂载到容器的/var/lib/mysql 下,在mysql容器中产生的数据就会保存在本机mysql/data目录下(路径会自动创建)

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

-d 后台运行容器

--name 给容器指定别名

--privileged=true centos7 可能会碰到权限问题,需要加参数

进入容器

docker exec -it mysql_test /bin/bash

docker加sudo的方法

1.创建docker组:sudo groupadd docker

2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker

3.重启服务:sudo service docker restart

4.刷新docker成员:newgrp - docker

Mac下

#查看用户组:

dscl . list /groups

#添加用户组:

sudo dscl . -create /Groups/docker

添加user到group:

sudo dscl . -append /Groups/docker GroupMembership username

安装php7.4.5

拉取镜像

docker pull php:7.4.5-fpm

创建Dockerfile

vim Dockerfile

FROM  php:7.4.5-fpm

RUN apt-get update && apt-get install -y \

libfreetype6-dev \

libjpeg62-turbo-dev \

libpng12*-dev \

&& docker-php-ext-enable opcache \

&& docker-php-ext-install pdo_mysql \

&& docker-php-ext-install gd \

构造镜像

docker build -t="php:7.4.5v2" .

启动

docker run -d -p 9000:9000 -v /var/www/html/:/var/www/html/ --name php-with-mysql --link mysql_test:mysql  --volumes-from mysql_test --privileged=true php-fpm5.6/v2

命令说明

-v 将本地磁盘上的php代码挂载到docker 环境中,对应docker的目录是 /var/www/html/

--name 新建的容器名称 php-with-mysql

--link 链接的容器,链接的容器名称:在该容器中的别名,运行这个容器是,docker中会自动添加一个host识别被链接的容器ip

--privileged=true 权限问题

备注

nproc内核参数,是系统上的最大进程数。

$(nproc)是获取安装系统的该内核参数。常用的还有获取文件路径的命令$(pwd)

扩展相关

# 查看已开启扩展

php -m

# 查看现有可以启动的扩展

ls /usr/local/lib/php/extensions/no-debug-non-zts-20190902/

# 启动扩展

docker-php-ext-enable opcache

# 安装并启动扩展

参考 Docker php安装扩展步骤详解

安装nginx1.16.1

拉取镜像

docker pull nginx:1.16.1

创建容器

docker run -d --link php-with-mysql:phpfpm --volumes-from php-with-mysql -p 80:80 -v /var/www/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf --name nginx-php --privileged=true  nginx

命令说明

--link php-with-mysql:phpfpm 将php容器链接到nginx容器里来,phpfpm是nginx容器里的别名。

--volumes-from php-with-mysql 将php-with-mysql 容器挂载的文件也同样挂载到nginx容器中

-v /var/www/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf  将nginx 的配置文件替换,挂载本地编写的配置文件

默认配置

vim default.conf

server {

listen       80;

server_name  localhost;

location / {

root   /var/www/html;

index  index.html index.htm index.php; # 增加index.php

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /var/www/html;

}

location ~ \.php$ {

root           /var/www/html; # 代码目录

fastcgi_pass   phpfpm:9000;    # 修改为phpfpm容器

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # 修改为$document_root

include        fastcgi_params;

}

}

配置docker-compose

文件结构 tree

.

├── docker-compose.yml

├── mysql

│   └── Dockerfile

├── nginx

│   ├── Dockerfile

│   └── conf

│       └── default.conf

├── phpfpm

│   └── Dockerfile

└── res

└── index.php

YAML配置

vim docker-compose.yml

nginx:

build: ./nginx

ports:

- "80:80"

links:

- "phpfpm"

volumes:

- /Users/majun/docker/res:/var/www/html

- /Users/majun/docker/nginx/conf:/etc/nginx/conf.d

phpfpm:

build: ./phpfpm

ports:

- "9000:9000"

volumes:

- /Users/majun/docker/res:/var/www/html

links:

- "mysql"

mysql:

build: ./mysql

ports:

- "3306:3306"

volumes:

- /Users/majun/docker/mysql/data:/var/lib/mysql

environment:

MYSQL_ROOT_PASSWORD : root

Mysql Dockerfile

FROM mysql:5.7

Nginx Dockerfile

FROM nginx:1.16.1

PHPFPM Dockerfile (这里直接用上面build过的镜像了)

FROM php:7.4.5v2

PHP连接Mysql测试

vim index.php

//PDO中的预处理1:sql语句中是: (别名的方式)的

header("Content-type:text/html;charset=utf-8");

//实例化PDO

try{

$pdo = new PDO(

"mysql:host=mysql;dbname=test",

"root",

"root"

);

}catch(PDOException $pe){

die("PDO实例失败!原因:".$pe->getMessage());

}

//定义sql语句

$sql = "select * from test";

//预处理sql

$stmt = $pdo->prepare($sql);

//执行

$stmt->execute();

// 获取多条数据

$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

var_dump($res);

备注 host需要写mysql容器名称

运行

docker-compose up -d

其他

安装redis

拉取镜像

docker pull redis

创建容器

docker run -itd -p 6379:6379 redis

进入容器调试

# redis-cli

127.0.0.1:6379> set name 1

OK

127.0.0.1:6379> get name

Mac配置LNMP开发环境全记录 一看就懂系列相关推荐

  1. CentOS 7配置LNMP开发环境及配置文件管理详解

    本篇文章主要介绍了CentOS 7配置LNMP开发环境及配置文件管理,详细的介绍了MySQL 5.6,PHP 5.6,Nginx的安装与配置,有兴趣的可以了解一下. 安装并配置MySQL 5.6 从C ...

  2. mac上配置php开发环境,Mac配置PHP开发环境

    求教怎么在Mac配置PHP开发环境,小弟跪谢了! 这是我写的Mac安装Lnmp的教程,你可以看下 Mac配置Lnmp环境 Mac中自带Apache,输入 sudo apachectl start 启动 ...

  3. Mac配置Java开发环境

    Mac配置Java开发环境 1.检查是否装了jdk 在终端输入:java -version,如果没有安装过jdk会提示需要安装jdk. 2.下载并安装jdk jdk下载地址:https://www.o ...

  4. mac配置idea-scala-spark开发环境

    目录 为什么适用Scala做spark开发 配环境过程 scala spark idea中scala配置 为什么适用Scala做spark开发 作为python的忠实拥簇者,昨天写了整整一天pyspa ...

  5. mac 配置 k8s 开发环境(安装go、docker、kubectl、minikube、kind,配置 goland)

    文章目录 参考 brew 命令使用 安装 go 1. mac 环境 brew 安装 安装很简单 配置环境变量 **参考** 首先明确环境变量的含义 配置 GOROOT 和 GOPATH 配置 gola ...

  6. mac配置iOS开发环境

    1.安装xcode 下载时间长,下载安装完后,git都是可以用的了 2.安装homebrew 这是管理mac安装包的工具,每个系统都有一个,就很绝啊,麻木安装. 官网:https://brew.sh/ ...

  7. 【VScode】MAC配置Python开发环境

    MAC安装VScode 官网下载 https://code.visualstudio.com/ stable为当前稳定版本,直接下载即可 安装 解压压缩包,双击安装 可选择喜欢的主题 在拓展里可以选择 ...

  8. M1 芯片 Mac 配置 Flutter 开发环境

  9. mac下java 开发环境搭建

    mac配置java开发环境: jdk1.7 +sdk1.7+maven +tomcat   1.先安装jdk ,才能安装sdk . 2 mac中jdk1.7的默认位置:/Library/Java/Ja ...

最新文章

  1. 2019最后一期—宏基因组分析技术研讨会
  2. python sqlite和mysql_python怎么与mysql、sqlite数据库通信——适配器:DB-API
  3. Objective-C单例
  4. 电路计算机辅助设计上海电力学院,上海电力学院电路计算机辅助设计二端口电路的设计.doc...
  5. c#输出一个平行四边形_如果Java 和 C# 同时出现,生态也差不多,你选择谁?
  6. git submodule 的使用
  7. 怎样使用DBMS_OUTPUT.PUT_LINE?
  8. C#序列化与反序列化以及深拷贝浅拷贝方法
  9. Java工作笔记-apache-tomcat-8.5.49及geoserver-2.7.5搭建
  10. 【python VS Code】调用自定义模块 ModuleNotFoundError: No module named XXX
  11. buildroot 下载和make nconfig
  12. 读“产品经理那些事儿”有感
  13. 【洛谷P1037】 产生数
  14. 如何通过项目周报获取项目信息-周报模板
  15. Pytorch教程[03]transforms
  16. 剽悍一只猫---新书分享
  17. geany配置html5,Geany的教程
  18. 解决 Push failed: Unable to access 'https://github.com/...': Failed to connect ...Connection Refused
  19. QGIS教程-2:数据的加载
  20. python学习(BMR计算器)

热门文章

  1. Excel数值、文本相互转换
  2. zabbix代理服务器配置
  3. [C语言错误]expected declaration or statement at end of input)
  4. 前端社区的恶趣味之Vanilla JS
  5. 密码学和计算机安全学科方向排名
  6. 北京2008年奥运会体育图标
  7. 知乎账号登录+验证码
  8. Home Assistant设备追踪之ping检测和nmap检测
  9. 小红书严惩刷量行为:如何才能优雅的种草
  10. 燕麦粉行业调研报告 - 市场现状分析与发展前景预测