windows环境docker安装LNMP环境 详解借助dockers-compose.yml3分钟快速完成

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文主要包括部分 注意事项 重要信息提示 快速执行安装的纯命令 相关介绍 配置文件,参考地址 1. 特别注意: 本文中提及的密码与配置文件可能不一致,简单改成了mima123456, 文中用的123456在进行说明 windows环境中,项目中mysql的连接主机为 mysql, 172.
 

本文主要包括部分
  1. 注意事项 重要信息提示
  2. 快速执行安装的纯命令
  3. 相关介绍
  4. 配置文件,参考地址

1.
特别注意:
本文中提及的密码与配置文件可能不一致,简单改成了mima123456, 文中用的123456在进行说明
windows环境中,项目中mysql的连接主机为 172...和localhost都连接失败 (Linux中用宿主机ip连接成功--没探究原因,欢迎评论补全)
安装成功后, 我发现项目连接 数据库的时候连接不了, 一直是 Connection timed out(2002) ,
但是我使用 cmd , navicate, 都能够连接, 而且 localhost, 172.0.0.1, 和对应的docker ip 都是可以连接的, 就是php项目中无法连接 一直提示 连接超时. 项目运行正常, 我的其他项目连接的其他服务器的数据库也是访问正常的.
解决记录:
项目连接数据库成功了 使用如下 注意项目中数据库主机用 host=mysql(我在linux中用的宿主机ip是可以直接访问数据库的,windows失败了)
$pdo = new PDO(‘mysql:host=mysql;dbname=site1’, ‘root’, ‘123456’);。
或者使用
$connect = mysqli_connect(‘mysql’,’root’,’123456′,’wordpress’,’3306′);
(注意 是 mysqli_connect, 不是 mysql_connect)
另外:
--强烈建议修改sql密码,配置文件中默认密码公开的

修改项目路径为自己已有项目路径(如果有,比如安装过PHPstudy的www目录),默认下载的配置文件目录下的www
注意:
配置中localhost在www/site1中,请修改site的域名配置或者localhost的配置指向
环境安装过后修改yml配置的数据库密码未能生效, 没找到解决办法, 间接解决方法是: 重新下载配置文件用新的命名,重新执行环境
参考链接中的下载的配置文件的版本号3执行失败  改成2就可以了 改成1页失败了的
注意:
如果本地有phpstudy等环境, 注意关闭环境, 并且注意关闭mysql进程(关闭phpstudy可能还有mysql进程存在),  否则启动会失败


2.

快速直接安装:
直接执行命令即可!
git clone https://github.com/yeszao/dnmp.git
docker-compose up


3.

错误记录:
环境安装过后修改yml配置的数据库密码未能生效, 没找到解决办法, 间接解决方法是: 重新下载配置文件用新的命名,重新执行环境
尝试过 2种方法
2.1.
docker-compose build 然后 docker-compose up -d
build会提示:
.....
Successfully built 6a55df4e9d16
redis uses an image, skipping
nginx uses an image, skipping
mysql uses an image, skipping
2.2.(以下是部分命令记录,修改的mysql密码均失败)
docker-compose down
  18 docker-compose build
  19 docker-compose ps
  20 docker-compose up -h
  21 docker-compose up --build -d
  22 docker-compose up --build -d --force-recreate
  23 docker-compose ps
  24 docker-compose down
  25 docker-compose up -d --force-recreate
(根据)


4. 详细说明:
项目目录,
项目路径指定了下载文件夹内的www目录, 如需改成其他目录或自己原有目录,直接修改目录下的文件 docker-compose.yml 内的全部 – ./www 为自己的目录, 比如 – F:/phpStudy2018/www(绝对路径) 或者 – ../phpStudy2018/www(相对路径)

mysql密码
windows环境中,项目中mysql的连接主机为 mysql, 172...和localhost都连接失败 (Linux中用宿主机ip连接成功--没探究原因,欢迎评论补全)
安装成功后, 我发现项目连接 数据库的时候连接不了, 一直是 Connection timed out(2002) ,
但是我使用 cmd , navicate, 都能够连接, 而且 localhost, 172.0.0.1, 和对应的docker ip 都是可以连接的, 就是php项目中无法连接 一直提示 连接超时. 项目运行正常, 我的其他项目连接的其他服务器的数据库也是访问正常的.

基础配置文件内容
# 注意 这里clone的配置文件中是3 我的执行失败 我改成2就可以了 ,1也不行 各自根据情况进行修改
version: "2"
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
# 修改此处 ./www/为自己的项目路径, 如果没有可以自定义 ,这里使用的是相对路径 就是git clone下来的目录中的www目录
- ./www/:/var/www/html/:rw
- ./conf/conf.d:/etc/nginx/conf.d/:ro
# 这里就是站点域名的配置文件 在相对路径 conf/conf.d/ 下面(注意 linux是反斜杠) clone下来的配置目录中的www目录下已经有了site1 2 的目录,所以访问没问题, 但是如果换成自己的项目目录, 就需要自己新建site1目录(因为site1配置文件中把localhost配置到了site1目录下了)或者自己修改site1里面的配置,localhost指向到自己的项目目录,
- ./conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./log/:/var/log/dnmp/:rw
networks:
- net-php

php:
build: ./php/php72/
expose:
- "9000"
volumes:
# 修改此处 ./www/为自己的项目路径, 如果没有可以自定义 ,这里使用的是相对路径 就是git clone下来的目录中的www目录
- ./www/:/var/www/html/:rw
- ./conf/php.ini:/usr/local/etc/php/php.ini:ro
# 这里就是站点域名的配置文件 在相对路径 conf/conf.d/ 下面(注意 linux是反斜杠) clone下来的配置目录中的www目录下已经有了site1 2 的目录,所以访问没问题, 但是如果换成自己的项目目录, 就需要自己新建site1目录(因为site1配置文件中把localhost配置到了site1目录下了)或者自己修改site1里面的配置,localhost指向到自己的项目目录,
- ./conf/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf:rw
- ./log/:/var/log/dnmp/:rw
networks:
- net-php
- net-mysql
- net-redis

mysql:
image: mysql:8.0
ports:
- "3306:3306"
volumes:
- ./conf/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
- ./mysql/:/var/lib/mysql/:rw
networks:
- net-mysql
environment:
# // todo: 修改为自己的密码,此密码github中公开的
MYSQL_ROOT_PASSWORD: "mima123456"

redis:
image: redis:4.0
networks:
- net-redis
ports:
- "6379:6379"

phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- "8080:80"
networks:
- net-mysql
environment:
- PMA_HOST=mysql
- PMA_PORT=3306

phpredisadmin:
image: erikdubbelboer/phpredisadmin:latest
ports:
- "8081:80"
networks:
- net-redis
environment:
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379

networks:
net-php:
net-mysql:
net-redis:

配置说明详细参考地址
http://www.cnblogs.com/xishuai/p/docker-compose.html
部分命令参考:

YAML 配置命令

配置 说明
build 指定 Dockerfile 所在的目录地址,用于构建镜像,并使用此镜像创建容器,比如上面配置的build: .
command 容器的执行命令
dns 自定义 dns 服务器
expose 暴露端口配置,但不映射到宿主机,只被连接的服务访问
extends docker-compose.yml的扩展,配置在服务中
image 使用的镜像名称或镜像 ID
links 链接到其它服务中的容器(一般桥接网络模式使用)
net 设置容器的网络模式(四种:bridgenonecontainer:[name or id]host
ports 暴露端口信息,主机和容器的端口映射
volumes 数据卷所挂载路径设置

Docker Compose 常用命令

命令 说明
docker-compose build 构建项目中的镜像,--force-rm:删除构建过程中的临时容器;--no-cache:不使用缓存构建;--pull:获取最新版本的镜像
docker-compose up -d 构建镜像、创建服务和启动项目,-d表示后台运行
docker-compose run ubuntu ls -d 指定服务上运行一个命令,-d表示后台运行
docker-compose logs 查看服务容器输出日志
docker-compose ps 列出项目中所有的容器
docker-compose pause [service_name] 暂停一个服务容器
docker-compose unpause [service_name] 恢复已暂停的一个服务容器
docker-compose restart 重启项目中的所有服务容器(也可以指定具体的服务)
docker-compose stop 停止运行项目中的所有服务容器(也可以指定具体的服务)
docker-compose start 启动已经停止项目中的所有服务容器(也可以指定具体的服务)
docker-compose rm 删除项目中的所有服务容器(也可以指定具体的服务),-f:强制删除(包含运行的)
docker-compose kill 强制停止项目中的所有服务容器(也可以指定具体的服务)

参考来源:http://www.cnblogs.com/xishuai/p/docker-compose.html 文末

推荐阅读:

linux环境docker安装LNMP环境 借助dockers-compose.yml3分钟快速完成

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
Ubuntu 虚拟化 Docker
Docker的安装
Docker的安装
50 0
|
6天前
|
时序数据库 Docker 容器
Docker安装InfluxDB
Docker安装InfluxDB
10 0
|
9天前
|
关系型数据库 MySQL 数据库
docker自定义安装mysql 5.7
docker自定义安装mysql 5.7
19 0
|
13天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
32 6
|
20天前
|
Linux Shell 开发工具
CentOS8中Docker安装及部署
CentOS8中Docker安装及部署
67 0
|
21天前
|
弹性计算 Serverless 数据库
ECS安装问题之docker安装如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
28天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB常见问题之安装gms时出现docker如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
29天前
|
Devops 开发工具 数据安全/隐私保护
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
43 0
|
30天前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
185 0
|
30天前
|
NoSQL MongoDB Docker
docker安装MongoDB
docker安装MongoDB
21 0