文章目录
前言(废话)
- 前一段时间域名和服务器相继到期了,由于服务器上的另一个站卖掉了,决定个人博客转CSDN,把以前写的一些学习内容慢慢搬过来。
- 首先在本地搭建一下环境,因为最近学了点Docker(类似于虚拟机),所以决定就用这个了。
- 我的环境是Mac,博客程序用的是Typecho,Docker是跨平台的,不同环境区别不大,后面也会写下自己的Docker学习记录。
!注意使用命令前将命令根据自己的情况补全!
一、创建网络
Docker容器之间是相互隔离的,而且每次重启容器时容器的ip会发生变化。首先创建一个共用的网络环境后,各个部分就可以通过容器名相互访问了。
docker network create --driver bridge --subnet 192.155.0.0/16 --gateway 192.155.0.1 lnmp-net
参数说明(–是两个小横线)
参数名 | 参数值 | 说明 |
---|---|---|
–driver | bridge | 桥接模式(网络连接模式) |
–subnet | 192.155.0.0/16 | 网段 |
–gateway | 192.155.0.1 | 网关的地址 |
最后一个是网络的名字
二、Mysql容器
1.创建Mysql容器及数据持久化
docker run --name docker_mysql -d -p 3310:3306 -v /本地conf地址:/etc/mysql/conf.d -v /本地数据地址:/var/lib/mysql -e MYSQL_ROOT_PASSWD=root用户密码 --net lnmp-net mysql:5.6
参数说明(注意看参数是一个-还是两个-)
参数名 | 参数值 | 说明 |
---|---|---|
–name | docker_mysql | 容器名 |
-d | 后台运行 | |
-p | 3310:3306 | 端口映射(本地端口:容器端口) |
-v | /本地conf地址:/etc/mysql/conf.d | 文件映射(本地地址:容器地址) |
-e | MYSQL_ROOT_PASSWD=root用户密码 | 配置信息 |
–net | lnmp-net | 网络名 |
最后是镜像名和版本号
使用-v将文件映射到本地,是为了实现数据持久化,即容器销毁后数据仍然还在。
2.连接mysql导入数据
我使用的是Navicat,使用什么无所谓。
填写数据如下图,主机名写localhost,端口写刚刚映射的3310,root用户的密码刚刚也配置好了。
三、PHP容器
docker run --name docker_php56 -d -v /本地文件地址:/www --net lnmp-net php
参数说明参考Mysql的参数说明
四、Nginx容器
1.创建Nginx容器
docker run --name docker_nginx -d -p 80:80 -v /网页文件地址:/usr/share/nginx/html -v /配置文件地址:/etc/nginx/conf.d -v /日志文件地址:/var/log/nginx --net lnmp-net nginx
参数说明参考Mysql的参数说明
2.创建及修改配置文件
在刚刚映射的配置文件目录下新建一个文件——default.conf,文件内容如下。
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass docker_php56:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
可以看到,在配置文件中,可以直接使用容器名和容器的端口来访问PHP
五、放入博客文件并修改
- 做好以上环境的搭建后,直接在刚刚Nginx容器创建时映射的网页文件目录中放入你备份的文件即可,但是注意要修改数据库配置哦。
- 数据库在使用时可以使用 localhost:本地映射端口 或 docker_mysql:3306
访问网页直接在浏览器中输入localhost访问。
总结
Docker是个十分实用的工具,既可以做测试使用,也可以用到以后在服务器上的批量化环境部署。🧑💻 🧑💻 🧑💻