对于Docker来说,最大的便利就是能快速的搭建起一个个的容器,容器之间可以通过网络和文件来进行通信。
之前我已经将自己的博客使用docker搭建起来了,这里简单记录一下docker-compose文件内容。
我的博客的架构为lnmp,依赖的容器有:
mariadb(Port:3306)
wordpress+php7.0-fpm(Port:9000)
phpmyadmin(Port:8009)
docker-compose.yml文件内容如下
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./jialeens:/var/www/html
links:
- wordpress
restart: always
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=******
restart: always
wordpress:
image: wordpress:4.8.0-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./jialeens:/var/www/html
environment:
- WORDPRESS_DB_NAME=***
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=*****
links:
- mysql
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8009:80'
Nginx配置文件:
jialeens.com.conf
server {
listen 80;
server_name jialeens.com www.jialeens.com;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
client_max_body_size 100m;
root /var/www/html;
index index.php;
access_log /var/log/nginx/jialeens-access-http.log;
error_log /var/log/nginx/jialeens-error-http.log;
if ($host = 'jialeens.com') {
return 301 http://www.jialeens.com$request_uri;
}
location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$ {
log_not_found off;
access_log off;
expires 7d;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "upload_max_filesize=128M \n post_max_size=128M";
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
因为流量不大,所以没做fastcgi的缓存,以后有空再弄吧。