本文共 7728 字,大约阅读时间需要 25 分钟。
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: 123456networks: 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.pidskip-external-lockingskip-name-resolve#default-character-set = utf8 #5.5版本 character-set-server = utf8 #5.6版本lower_case_table_names = 1 max_connections = 10000open_files_limit = 65535wait_timeout = 600interactive_timeout = 600################# mysql日志目录基本配置 ############log-error = /usr/local/mysql/logs/error-log/error.log#####慢查询设置slow_query_log = ON slow_query_log_file = slow.loglong_query_time = 2log_queries_not_using_indexes#####二进制日志设置binlog_format = "ROW"log-bin = mysql-binlog_bin_index = binlog.indexrelay-log = relay-bin relay_log_index = mysql_relay_log.indexexpire_logs_days = 30max_binlog_size = 60M############# mysql主主复制配置项 ####################server-id = 1auto_increment_offset = 1auto_increment_increment= 2#log-slave-updates#slave-skip-errors=allslave-skip-errors = 1032,1062sync_binlog = 0 # 默认为0,不刷新,由系统决定 # 为1则每一次binlog写入与硬盘同步#####主从忽略表库配置replicate-ignore-db = mysql#replicate-ignore-table=db.table############# mysql性能配置 ######################sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONkey_buffer_size = 200Mtmp-table-size = 32Mtable_open_cache = 128table_definition_cache = 200query_cache_size = 32Mquery_cache_limit = 1Mquery_cache_min_res_unit= 2kmax_allowed_packet = 20M#####与线程有关的配置thread_concurrency = 8thread_cache_size = 64sort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 2Mjoin_buffer_size = 2M#####performance_schema 配置performance_schema = offperformance_schema_max_table_instances=100################ mysql引擎优化 ###########################myisam-recover-options = FORCE,BACKUPmyisam_sort_buffer_size = 64Mmyisam_max_sort_file_size=10Gmyisam_repair_threads = 1myisam_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; # 线程绑定cpuworker_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; }}
转载于:https://blog.51cto.com/11962757/2086760