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-compose rm    # 删除容器

    docker-compose构建lnmp架构示例:
    [[email protected] 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          = \\[email protected] \\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://blog.51cto.com/11962757/2086760

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

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

docker-compose 编排lnmp容器

vi docker-compose.ymlversion: "2"services:php:image: php:7.2-fpmnetworks: lnmpvolumes: ./web:/webenvironment: TZ=Asia/Shanghainginx:image: nginx:1.14networks: lnmpports: 80:80volumes: ./web:/web ./nginx.conf:/etc/nginx/nginx.confenvironment: TZ=

Docker容器——Compose编排_consul集群_template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具 (2)使用docker compose不再需要使用shell脚本启动容器 (3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来

Docker之Compose服务编排

Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理更为方便快捷. Compose网站:https://docs.docker.com/compos

(转)Docker之Compose服务编排

转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Compose是Fig的升级版,Fig已经不再维护.Compose向下兼容Fig,所有fig.yml只需要更名为docker-compose.yml即可被Compose使用. 服务编排工具使得Docker应用管理

使用Docker compose编排Laravel应用

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

Docker容器之Compose编排、consul集群、template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具(2)使用docker compose不再需要使用shell脚本启动容器(3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来 布

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 1.13 编排能力进化

摘要: 经过了近6个月的磨砺,Docker 1.13在2017年1月发布,它标志着 Docker 内置编排能力的进一步成熟.本文将介绍Docker在编排方面的新进展. 经过了近6个月的磨砺,Docker 1.13在2017年1月发布,它标志着 Docker 内置编排能力的进一步成熟.本文将介绍Docker在编排方面的新进展. 简介 去年6月,Docker宣布在1.12版的引擎中内置编排能力,也就是 Swarm Mode,在容器之上引入了服务(service)的概念,也实验性的推出了应用栈(sta

小白学Docker之Compose

承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是通过一个YAML文件进行服务配置. 使用Compose主要有三步: 在每个应用环境中配置一个Dockerfile,定义单个应用的镜像 使用docker-compose.yml来组装各个应用 运行docker-compose up命令来运行整个应用 一个基本的docker-compose.yml可能长