docker-compose 是一个可以快速进行多容器编排的神器
安装:
pip install docker-compose
docker-compose -h 查看子命令:
常用的命令有:
- docker-compose build # 构建镜像
- docker-compose up # 编排启动容器 -d 以守护模式启动
- docker-compose start # 启动容器
- docker-compose stop # 停止容器
- docker-compose ps # 查看容器
- docker-compose rm # 删除容器
docker-compose 构建 lnmp 架构示例:
- [root@CentOS7 docker]# tree ./
- ./
- lnmp
- docker-compose.yml
- mysql
- ?? conf
- ?? ?? my.cnf
- ?? data
- ??
- nginx
- ?? conf.d
- ?? ?? default.conf
- ?? |
- ?? nginx.conf
- web
- index.php
编辑 docker-compose 文件:
- vim docker-compose.yml
- version: "2"
- services:
- php:
- image: php:7.2.3-fpm
- networks:
- - lnmp
- volumes:
- - ./web:/web
- environment:
- - TZ=Asia/Shanghai
- nginx:
- image: nginx:1.13
- networks:
- - lnmp
- ports:
- - 80:80
- volumes:
- - ./web:/web
- - ./nginx/nginx.conf:/etc/nginx/nginx.conf
- - ./nginx/conf.d/default..conf:/etc/nginx/conf.d/default.conf
- environment:
- - TZ=Asia/Shanghai
- links:
- - php
- mysql:
- hostname: mysql
- image: mysql:5.6
- environment:
- - TZ=Asia/Shanghai
- ports:
- - 3306:3306
- networks:
- - lnmp
- volumes:
- - ./mysql/conf:/etc/mysql/conf.d
- - ./mysql/data:/var/lib/mysql
- environment:
- MYSQL_ROOT_PASSWORD: 123456
- networks:
- lnmp:
执行 docker-compose up -d 启动 lnmp(注意需要在文件所在的路径下执行)
- my.cnf
- ######### This is a conf of mysql
- ################ client 配置 #####################
- #[client]
- #port = 3306
- #socket = /usr/local/mysql/logs/mysql.sock
- ###############mysql 服务端配置 ##################
- [mysqld]
- user = mysql
- port = 3306
- ################### 存放路径 #####################
- #socket = /usr/local/mysql/logs/mysql.sock
- #basedir = /usr/local/mysql
- #datadir = /usr/local/mysql/data
- #pid-file = /usr/local/mysql/logs/mysql.pid
- skip-external-locking
- skip-name-resolve
- #default-character-set = utf8 #5.5 版本
- character-set-server = utf8 #5.6 版本
- lower_case_table_names = 1
- max_connections = 10000
- open_files_limit = 65535
- wait_timeout = 600
- interactive_timeout = 600
- ################# mysql 日志目录基本配置 ###########
- #log-error = /usr/local/mysql/logs/error-log/error.log
- ##### 慢查询设置
- slow_query_log = ON
- slow_query_log_file = slow.log
- long_query_time = 2
- log_queries_not_using_indexes
- ##### 二进制日志设置
- binlog_format = "ROW"
- log-bin = mysql-bin
- log_bin_index = binlog.index
- relay-log = relay-bin
- relay_log_index = mysql_relay_log.index
- expire_logs_days = 30
- max_binlog_size = 60M
- ############# mysql 主主复制配置项 ####################
- server-id = 1
- auto_increment_offset = 1
- auto_increment_increment= 2
- #log-slave-updates
- #slave-skip-errors=all
- slave-skip-errors = 1032,1062
- sync_binlog = 0 # 默认为 0, 不刷新, 由系统决定 # 为 1 则每一次 binlog 写入与硬盘同步
- ##### 主从忽略表库配置
- replicate-ignore-db = mysql
- #replicate-ignore-table=db.table
- ############# mysql 性能配置 ######################
- sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
- key_buffer_size = 200M
- tmp-table-size = 32M
- table_open_cache = 128
- table_definition_cache = 200
- query_cache_size = 32M
- query_cache_limit = 1M
- query_cache_min_res_unit= 2k
- max_allowed_packet = 20M
- ##### 与线程有关的配置
- thread_concurrency = 8
- thread_cache_size = 64
- sort_buffer_size = 2M
- read_buffer_size = 2M
- read_rnd_buffer_size = 2M
- join_buffer_size = 2M
- #####performance_schema 配置
- performance_schema = off
- performance_schema_max_table_instances=100
- ################ mysql 引擎优化 ###########################
- myisam-recover-options = FORCE,BACKUP
- myisam_sort_buffer_size = 64M
- myisam_max_sort_file_size=10G
- myisam_repair_threads = 1
- myisam_recover
- #innodb 引擎优化
- innodb_read_io_threads = 8 #### 用来同步 IO 操作的 IO 线程的数量.
- innodb_thread_concurrency = 8 #### 使用 InnoDB 引擎, 内核被允许的线程数, 这个最佳值取决于应用程序, 硬件还有操作系统的调度程序太高的值肯定会导致线程抖动
- innodb_flush_log_at_trx_commit = 1 #### 如果设置为 1 ,InnoDB 会在每次提交后刷新 (fsync) 事务日志到磁盘上,
- innodb_log_buffer_size = 2M #### 用来缓冲日志数据的缓冲区的大小.
- innodb_log_file_size = 100M #### 在日志组中每个日志文件的大小,
- innodb_log_files_in_group = 3 #### 在日志组中文件的总量, 通常 2-3 就足够了
- innodb_max_dirty_pages_pct = 90 #### 在 InnoDB 缓冲池中最大允许的脏页面的比例.
- innodb_lock_wait_timeout = 120 #### 在被回滚前, 一个 InnoDB 的事务应该等待一个锁被批准多久.
- ################ mysql 备份命令配置 #######################
- [mysqldump]
- quick
- ############## mysql 热备份命令配置 #######################
- [mysqlhotcopy]
- interactive-timeout
- [mysql]
- prompt = \\u@mysql \\r:\\m:\\s-> #修改登陆默认提示符
- nginx.conf
- #user nginx;
- worker_processes auto; # cpu 密集型写 cpu 个数, 其他写 cpu 的 2 倍, 偷懒写 auto
- #worker_cpu_affinity 0001 0010 0100 1000; # 线程绑定 cpu
- worker_rlimit_nofile 65536;
- error_log /var/log/nginx/error.log info;
- #pid logs/nginx.pid;
- events
- {
- use epoll; # 复用客户端线程的轮询方法
- accept_mutex off;
- worker_connections 65536;
- }
- http
- {
- include mime.types;
- default_type text/html;
- log_format main $remote_addr - $remote_user [$time_local] "$request"
- $status $body_bytes_sent "$http_referer"
- "$http_user_agent" "$http_x_forwarded_for"
- "$upstream_cache_status";
- access_log /var/log/nginx/access.log main;
- sendfile on;
- server_tokens off; # 隐藏 Nginx 版本号
- keepalive_timeout 60;
- client_header_buffer_size 4k;
- client_body_buffer_size 320k;
- client_max_body_size 8m;
- keepalive_requests 8192;
- large_client_header_buffers 4 32k;
- server_names_hash_bucket_size 128;
- open_file_cache max=65536 inactive=60s;
- open_file_cache_valid 80s;
- open_file_cache_min_uses 1;
- proxy_connect_timeout 50;
- proxy_read_timeout 50;
- proxy_send_timeout 50;
- proxy_buffer_size 320k;
- proxy_buffers 4 640k;
- proxy_busy_buffers_size 1280k;
- proxy_temp_file_write_size 1024m;
- proxy_ignore_client_abort on;
- proxy_temp_path /tmp/temp;
- proxy_cache cache_one;
- proxy_cache_valid 200 302 1m;
- proxy_cache_valid 301 1m;
- proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- add_header X-Cache-Status $upstream_cache_status;
- proxy_http_version 1.1;
- proxy_set_header Connection "";
- fastcgi_temp_path /tmp/fastcgi_temp; # php 缓存配置
- fastcgi_cache_path /tmp/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128m inactive=30m max_size=1g;
- fastcgi_cache_key $request_method://$host$request_uri;
- fastcgi_cache_valid 200 302 1h;
- fastcgi_cache_valid 301 1d;
- fastcgi_cache_valid any 1m;
- fastcgi_cache_min_uses 1;
- fastcgi_cache_use_stale error timeout http_500 http_503 invalid_header;
- gzip on;
- gzip_min_length 1k; # 指定压缩文件的最小尺寸
- gzip_buffers 4 64k;
- gzip_http_version 1.1;
- gzip_comp_level 2; # 压缩等级为 2
- gzip_types text/plain text/CSS application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # 允许压缩的文件类型
- charset UTF-8;
- include /etc/nginx/conf.d/*.conf;
- #include /usr/local/nginx/conf/httpsconf/*.conf;
- }
- default.conf
- server {
- listen 80;
- server_name localhost;
- location / {
- root /web;
- index index.html index.htm;
- }
- location ~ \.php$ {
- root /web;
- fastcgi_pass php:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_name;
- include fastcgi_params;
- }
- location ~ .+\.(gif|jpg|jpeg|png|bmp|swf|txt|csv|doc|docx|xls|xlsx|ppt|pptx|flv)$
- {
- expires 30d; # 静态文件缓存时间
- }
- location ~ .+\.(js|css|html|xml)$
- {
- expires 30d;
- }
- }
来源: http://www.bubuko.com/infodetail-2527041.html