docker-compose 编排lnmp容器

vi docker-compose.yml
version: "2"
services:
php:
image: php:7.2-fpm
networks:

  • lnmp
    volumes:

    • ./web:/web
      environment:
  • TZ=Asia/Shanghai
    nginx:
    image: nginx:1.14
    networks:
  • lnmp
    ports:
  • 80:80
    volumes:
  • ./web:/web
  • ./nginx.conf:/etc/nginx/nginx.conf
    environment:
  • TZ=Asia/Shanghai
    links:
  • php
    mysql:
    hostname: mysql
    image: mysql:5.7
    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:

注意:一下是要创建的文件

vi nginx.conf
#user nginx;
worker_processes auto; # cpu密集型写cpu个数,其他写cpu的2倍,偷懒写auto

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;
}

vi 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

character-set-server = utf8 #5.6/5.7版本

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 = \[email protected] \r:\m:\s-> #修改登陆默认提示符

vi 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://blog.51cto.com/10158955/2152751

时间: 2024-07-31 00:26:18

docker-compose 编排lnmp容器的相关文章

docker: docker-compose 编排lnmp容器

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-c

使用Docker compose编排Laravel应用

前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环境要求 先要安装好Docker 和 Docker compose,而且Docker 仓库镜像最好换成国内的.一般地,我开发电脑上会运行一个Vagrant,然后再在里面运行Docker等应用. 主要思路 Docker官方推荐的是一个容器运行一个服务,所以会有Compose编排,各个服务间通过容器互联技

Docker Compose—简化复杂容器应用的利器

Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compose # 当前最新的Docker是1.6.2,Compose为1.2.0 curl -s https://get.docker.io/ubuntu/ | sudo sh sudo apt-get update sudo apt-get install lxc-docker # 参考http://do

Docker学习 Part-07(Docker Compose 服务编排)

Docker Compose 一.安装Docker Compose # Compose目前已经完全支持Linux.Mac OS和Windows,在我们安装Compose之前,需要先安装Docker.下面我 们以编译好的二进制包方式安装在Linux系统中. curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/

阿里云上Docker Compose部署wordpress

先上官方文档: https://docs.docker.com/compose/wordpress/ 我的环境: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected] ~]# uname -r 3.10.0-123.9.3.el7.x86_64 可以使用Docker Compose可以利用容器,在隔离环境下轻松运行WordPress. 1.安装C

009.Docker Compose基础使用

一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配置中创建并启动所有服务. Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程. 使用Compose基本上是一个三步过程: 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环

使用docker compose部署服务

谈到微服务的话题,技术上我们往往会涉及到多服务.多容器的部署与管理. Docker 有三个主要的作用:Build, Ship和Run.使用docker compose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YUML语法)文件,在这个文件上面描述应用的架构,如使用什么镜像.数据卷.网络.绑定服务端口等等,然后再用一条命令就可以管理所有的服务(如启动.停止.重启.日志监控等等). 本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布.网

Docker Compose容器编排

本章知识点概括: Docker Compose容器编排构建自动发现的Docker服务架构实现容器服务自动加入Nginx集群 **Docker Compose容器编排功能** Docker compose的前身是Fig,它是一个定义及运行多个docker容器的工具 使用Docker Compose不再需要使用shell脚本来启动容器 Docker Compose非常适合组合是同多个容器进行开发的场景 可以执行多个容器的操作 **Docker Compose容器编排** YAML是一种标记语言很直观

容器编排 Docker Compose

在我们启动容器的时候经常要使用docker run 指定很多参数,当我们需要管理很多容器时,使用这样的方式会给我们的运维人员带来很大的负担,docker compose容器编排工具无疑是解决这个一问题的利器. Docker Compose是用来管理多容器应用的工具,我们可以使用compose file 文件来配置容器的应用和服务,编写好compose file 文件以后,我们只需要使用一条简单的命令就可以创建并启动我们需要的应用. 使用compose一般有三个步骤:1.编写Dockerfile,