学习python中django框架的小伙伴一定不能错过本章节,一定要认真学习manage命令的运用介绍。
一 安装Docker
```python
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
yum install -y docker-ce
# 设置开机启动
systemctl enable docker
# 启动 Docker
systemctl start docker
# 查看版本
docker version
```
# 二 安装Docker-compose
```python
# 下载
curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) > /usr/bin/docker-compose
# 赋予执行权限
chmod +x /usr/bin/docker-compose
# 查看版本
docker-compose --version
```
# 三 构造目录
```python
# 任意路径下,建目录如下
blog # 目录
-docker-compose.yml # docker-compose配置文件
-mysql.env # mysql配置文件
-mysql # mysql数据,配置信息,日志所在目录
-conf # mysql配置文件目录
-data # mysql数据目录
-logs # mysql日志目录
-nginx
-default.conf # nginx配置文件
-php
-Dockerfile # php镜像的dockerfile
-www
-build # Typecho的最新源码,本文是1.1-17.10.30-release.tar.gz,更多版本官网下载,下载完解压到该路径即可(http://typecho.org/)
### 如果嫌自己制作麻烦,直接下载我创建好的即可,百度网盘
```
# 四 各文件配置详情
## 4.1 docker-compose.yml
```python
version: "3"
services:
nginx:
image: nginx
ports:
- "80:80"
restart: always
volumes:
- ./www/build:/var/www/html
- ./nginx:/etc/nginx/conf.d
depends_on:
- php
networks:
- web
blog_php:
build:
context: ./php
dockerfile: Dockerfile
restart: always
ports:
- "9000:9000"
volumes:
- ./www/build:/var/www/html
environment:
- TZ=Asia/Shanghai
depends_on:
- mysql
networks:
- web
mysql:
image: mysql:5.7
restart: always
ports:
- "3306:3306"
env_file:
- mysql.env
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/logs:/var/log/mysql
- ./mysql/conf:/etc/mysql/conf.d
networks:
- web
networks:
web:
```
## 4.2 mysql.env
```python
MYSQL_ROOT_PASSWORD=lqz12345
MYSQL_DATABASE=blog
TZ=Asia/Shanghai
```
## 4.3 nginx/default.conf
```python
server {
listen 80;
server_name liuqingzheng.com;
root /var/www/html;
index index.php;
access_log /var/log/nginx/typecho_access.log main;
location ~ .*\.php(\/.*)*$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
## 4.4 php/Dockerfile
```python
FROM php:7.3.29-fpm
MAINTAINER lqz
RUN apt-get update && docker-php-ext-install pdo_mysql && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini
```
## 4.5 www/build
```python
# 这里面就是typecho博客下载后解压路径
# 可以去官网下载最新 http://typecho.org/
```
# 五 启动
```python
####### 如果嫌操作麻烦,直接下载,解压,放在服务器的任意路径下,再执行如下命令#######
链接: https://pan.baidu.com/s/16hwzWvxlaS10Ui5PPsJ1dA
提取码: 7uqt 复制这段内容后打开百度网盘手机App,操作更方便哦
##############
# 在blog目录下执行
docker-compose up -d
# 在浏览器中访问 服务器地址
http://10.0.0.100/install.php
# 按照下图一步步操作,配置完成后,可以切换主题,主题网站为(https://typecho.me/)
```
# 六 后记
```python
# 不使用docker-compse也可以直接纯docker运行
# 启动mysql5.7
docker run -di -p 3306:3306 -e MYSQL_ROOT_PASSWORD=lqz12345 -v /blog/mysql/data:/var/lib/mysql -v /blog/mysql/logs:/var/log/mysql -v /blog/mysql/conf:/etc/mysql/conf.d --name mysql mysql:5.7
# 启动php
docker run -di --name php --link=mysql -p 9000:9000 -v /soft/www:/var/www/html php:7.3.29-fpm
# 进入容器安装mysql驱动
docker exec -it php /bin/bash
apt-get update
docker-php-ext-install pdo_mysql
echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini
# 启动nginx
docker run -d -p 80:80 --name nginx -v /blog/build/:/var/www/html /blog/nginx:/etc/nginx/conf.d--link php --name nginx nginx
# 访问即可
http://10.0.0.100/install.php
## 注意:
## 如果博客要迁移,只需要把只需将整个 blog 目录打包传输至安装有 Docker 和 Docker Compose 的新服务器,然后重新编排容器即可
## 只要不删除blog/mysql/data文件夹下的数据,博客的内容就不会丢失,重新启动一个mysql容器即可
## 再启动的mysql_new和mysql共享数据
docker run -di -p 3306:3306 -e MYSQL_ROOT_PASSWORD=lqz12345 -v /blog/mysql/data:/var/lib/mysql -v /blog/mysql/logs:/var/log/mysql -v /blog/mysql/conf:/etc/mysql/conf.d --name mysql_new mysql:5.7
```