本次安装的推荐配置:
- nginx 1.24.0
- mysql 5.7.43
- php 7.4.3-fpm
- redis 7.2.0
一、安装虚拟机
vm虚拟机需要4g内存,网络使用nat模式设置静态ip、50G硬盘、1cpu、2核(踩坑经验:太低配置重启后会开不了机)
二、安装centos7
uname -r 查看版本要在3.10以上
更新系统组件 yum -y update
三、安装docker
删除旧docker
yum remove docker docker-common docker-selinux docker-engine
安装工具
yum install -y yum-utils device-mapper-persistent-data Ivm2
配置docker的yum源
安装docker
sudo yum install -y docker-ce
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
设置镜像国内加速(踩坑经验:设置多个源头,不然会很慢)
sudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn/",
"https://hub-mirror.c.163.com/",
"https://reg-mirror.qiniu.com/"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
设置容器局域网,容器间相互访问 (心得:容器互相访问,不用通过宿主机,更快)
docker network create my_network
查看局域网是否创建成功
docker network ls

四、安装php
下载php镜像
docker pull php:7.4.3-fpm (踩坑经验:后面要带fpm)
使用镜像生成临时容器 ,名为:test_php7.4.3,用来拷贝配置文件(踩坑经验:空文件夹做共享,会将容器的配置文件清空)
docker run -it --name test_php7.4.3-fpm -d php:7.4.3-fpm
使用 docker ps 命令查看是否创建成功
创建需要被共享的文件夹
mkdir -p /data/php7.4.3 && cd /data/php7.4.3

将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/usr/local/etc /data/php7.4.3
启动正式容器
docker run \
--network my_network \
--name prod_7.4.3-fpm \
--restart=always \
-v /data/php7.4.3/etc:/usr/local/etc \
-v /data/nginx1.24.0/html:/var/www/html \
-d php:7.4.3-fpm
备注:--restart=always 重启自动启动容器
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
php开通 mysql pdo 扩展,php连接mysql会用到
进入php容器后
查看php扩展模块
php -m
安装扩展
docker-php-ext-install pdo pdo_mysql
五、安装nginx
下载镜像
docker pull nginx:1.24.0
镜像生成临时容器(用来拷贝配置文件)
docker run -it --name test_nginx1.24.0 -d nginx:1.24.0
使用docker ps 查询是否启动成功
创建需要被共享的文件夹
mkdir -p /data/nginx1.24.0/conf/cert
mkdir -p /data/nginx1.24.0/conf/conf.d
mkdir -p /data/nginx1.24.0/html
mkdir -p /data/nginx1.24.0/log
mkdir -p /data/nginx1.24.0/ssl
将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/etc/nginx/conf.d /data/nginx1.24.0/conf
docker cp [临时容器id]:/etc/nginx/nginx.conf /data/nginx1.24.0/conf/nginx.conf
docker cp [临时容器id]:/usr/share/nginx/html /data/nginx1.24.0
启动正式容器
docker run \
--network my_network \
-p 80:80 \
-p443:443 \
--name prod_nginx1.24.0 \
--restart=always \
-v /data/nginx1.24.0/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx1.24.0/conf/cert:/etc/nginx/cert \
-v /data/nginx1.24.0/ssl:/etc/nginx/ssl/ \
-v /data/nginx1.24.0/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx1.24.0/log:/var/log/nginx \
-v /data/nginx1.24.0/html:/usr/share/nginx/html \
-d nginx:1.24.0
备注:--restart=always 重启自动启动容器
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
六、安装mysql
下载镜像
docker pull mysql:5.7.43
开启临时镜像(用来拷贝配置文件)
docker run -it --name test_mysql5.7.43 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql:5.7.43
创建需要被共享的文件夹
mkdir -p /data/mysql5.7.43

将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/var/log /data/mysql5.7.43
docker cp [临时容器id]:/var/lib /data/mysql5.7.43
docker cp [临时容器id]:/etc/mysql/conf.d /data/mysql5.7.43
docker cp [临时容器id]:/etc/mysql/mysql.conf.d /data/mysql5.7.43
启动正式容器
docker run \
--network my_network \
--name prod_mysql5.7.43 \
--restart=always \
-p 3306:3306 \
-v /data/mysql5.7.43/log:/var/log \
-v /data/mysql5.7.43/lib:/var/lib \
-v /data/mysql5.7.43/conf.d:/etc/mysql/conf.d \
-v /data/mysql5.7.43/mysql.conf.d:/etc/mysql/mysql.conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root123456 \
-d mysql:5.7.43
备注:--restart=always 重启自动启动容器
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
# 进入容器
docker exec -it [容器id] bash
# 创建用户并开启远程登录
CREATE USER 'user_tp'@'%' IDENTIFIED BY 'user_tp_123456';
# 创建数据库并设置字符集
CREATE DATABASE `tp_test` CHARACTER SET 'utf8mb4';
# 给账号授权数据库
GRANT ALL PRIVILEGES ON `tp_test`.* TO 'user_tp'@'%';
# 刷新权限
FLUSH PRIVILEGES;
使用远程工具连接mysql,并建立一个user用户表,后面用来测试

七、运行php项目
将php项目通过ftp上传到 /data/nginx1.24.0/html (上面配置了这个地址会共享到容器内对应的文件夹)

新增一个网站配置


hosts新增一行 (你的windows电脑)

重启docker
systemctl restart docker
在php项目中,新增一个访问数据库的代码

项目连接mysql

打开浏览器测试

都是踩坑经验,无私分享,有问题欢迎留言,共同进步!
- Centos7下搭建gitbook环境踩坑记录
1.安装npm yum -y install npm 2.配置npm仓 npm config set registry https://mirrors.tencent.com/npm/ 3.安装git ...
- ubuntu搭建开发环境踩坑实录
谨以此文,记录和ubuntu系统不死不休的搏斗过程,后续待补. 1.双系统安装,windows采用uefi模式安装(优启通可制作uefi的win10安装盘),ubuntu不要划分boot区,而应该划分 ...
- [坑况]——webpack搭建前端环境踩过的坑啊
前言 嘿哈,webpack搭建前端环境踩过的坑啊! 第一个:完全不知所措 webpack4 下面用不了HtmlWebpackPlugin 和 ExtractTextPlugin 解决方案: html- ...
- Docker搭建Hadoop环境
文章目录 Docker搭建Hadoop环境 Docker的安装与使用 拉取镜像 克隆配置脚本 创建网桥 执行脚本 Docker命令补充 更换镜像源 安装vim 启动Hadoop 测试Word Coun ...
- mac下通过docker搭建LEMP环境
在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...
- 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境
CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
- docker搭建lnmp环境(问题,资料,命令)
入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...
- Docker搭建disconf环境,三部曲之一:极速搭建disconf
Docker下的disconf实战全文链接 <Docker搭建disconf环境,三部曲之一:极速搭建disconf>: <Docker搭建disconf环境,三部曲之二:本地快速构 ...
- Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像
Docker下的disconf实战全文链接 <Docker搭建disconf环境,三部曲之一:极速搭建disconf>: <Docker搭建disconf环境,三部曲之二:本地快速构 ...
随机推荐
- 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
2021-06-19:交错字符串. 有三个字符串s1,s2,s3.判断s3是否由s1和s2交错组成的.比如s1="abc",s2="123",s3=" ...
- 11g ADG级联备库基础测试环境准备
客户通过duplicate生产备库的方式创建cascade备库. 发现每次都会遇到两个文件报错,ORA-17628: Oracle error 19505错误,且每一次跑,报错文件不一样. 现在想帮客 ...
- 解决echarts图形由于label过长导致文字显示不全问题
使用echarts 打印饼图,在pc没问题,但一到移动端问题就来了,由于屏幕过小,导致label部分被遮挡 一.问题分析 如上图这个就尴尬了,囧么办呢? 还好echarts 提供了formatter方 ...
- Singleton 单例模式简介与 C# 示例【创建型】【设计模式来了】
〇.简介 1.什么是单例模式? 一句话解释: 单一的类,只能自己来创建唯一的一个对象. 单例模式(Singleton Pattern)是日常开发中最简单的设计模式之一.这种类型的设计模式属于创建型 ...
- undefined reference to错误的解决方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/cserchen/article/deta ...
- 【HarmonyOS】如何获取公共目录的图片等文件(API7 FA模型JS语言)
[关键字] API7.JS.公共目录.@ohos.multimedia.mediaLibrary [前言] 在使用API7 JS开发HarmonyOS应用时,需要获取非应用目录即内部存储公共目录下 ...
- 【HMS Core】华为帐号服务,获取Access Token报错{sub_error:20152,error_description:invalid code,error:1101}
[问题描述] 华为账号服务,接口获取Access Token报错:{sub_error:20152,error_description:invalid code,error:1101} [问题分析 ...
- 第二章 VM与Linux的安装
1. VMWare 安装 2. CentOS 安装 安装网址:https://blog.csdn.net/qq_41819965/article/details/11118 ...
- 自然语言处理 Paddle NLP - 文本翻译技术及应用-理论
什么是机器翻译 机器翻译质量的自动评价 从统计机器翻译到神经网络机器翻译 多语言/多领域/多模态的翻译应用 神经网络机器翻译面临的挑战 视频:https://aistudio.baidu.com/ai ...
- 3 分钟为英语学习神器 Anki 部署一个专属同步服务器
原文链接:https://icloudnative.io/posts/anki-sync-server/ Anki 介绍 Anki 是一个辅助记忆软件,其本质是一个卡片排序工具--即依据使用者对卡片上 ...