docker实现lnmp负载环境

本文详细讲解了docker容器搭建lnmp负载均衡的例子

1.安装mysql

[root@mysql ~]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz
[root@mysql ~]# tar -xf mysql-5.7.22-el7-x86_64.tar.gz 
[root@mysql ~]# mv mysql-5.7.22-el7-x86_64  /usr/local/
[root@mysql ~]# cd /usr/local/
[root@mysql local]# ln -s mysql-5.7.22-el7-x86_64/ mysql
[root@mysql local]# 
[root@mysql local]# cp mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql local]# ll /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10576 Jul 29 04:45 /etc/init.d/mysqld
[root@mysql local]# 
[root@mysql local]# useradd mysql
[root@mysql local]# mkdir -p /var/lib/mysql
[root@mysql local]# chown -R mysql.mysql /var/lib/mysql
[root@mysql local]# mkdir -p /var/log/mariadb/
[root@mysql local]# chown -R mysql.mysql /var/log/mariadb/
[root@mysql local]# touch /var/log/mariadb/mariadb.log
[root@mysql local]# chown -R mysql.mysql /var/log/mariadb/
[root@mysql local]# /etc/init.d/mysqld start
[root@mysql local]# mkdir -p /var/run/mariadb/
[root@mysql local]# chown -R mysql.mysql /var/run/mariadb/

结尾添加下面的环境变量

[root@mysql local]# vim /etc/profile
export MYSQL=/usr/local/mysql/bin/
export PATH="${MYSQL}:${PATH}"

使环境变量生效

[root@mysql local]# source /etc/profile

安装依赖

[root@mysql local]# yum -y install libaio

初始化数据,黄色部分是密码

[root@mysql local]# mysqld --initialize
2018-07-29T09:12:33.373161Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-07-29T09:12:33.951747Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-07-29T09:12:34.060407Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-07-29T09:12:34.120200Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 8775432e-930f-11e8-b03c-000c2939e151.
2018-07-29T09:12:34.121440Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-07-29T09:12:34.122642Z 1 [Note] A temporary password is generated for root@localhost: k/lhzl)&z5qK

[root@mysql local]# chown -R mysql.mysql /var/lib/mysql
[root@mysql local]# /etc/init.d/mysqld start
[root@mysql local]# mysqladmin -uroot -p"k/lhzl)&z5qK" password xiaohuang -S /var/lib/mysql/mysql.sock

授权
mysql> grant all on *.* to root@'%' identified by 'xiaohuang';
Query OK, 0 rows affected, 1 warning (0.00 sec)

2安装docker

[root@php ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

[root@php ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@php ~]# yum -y install docker-ce
[root@php ~]# systemctl start docker
[root@php ~]# systemctl enable docker

3.安装docker-compose

[root@php /]# yum -y install epel-release
[root@php /]# yum -y install python-pip
[root@php /]# pip install docker-compose
[root@php /]# docker-compose version

4.创建镜像

4.1准备环境

[root@php ~]# mkdir -p /docker/{system,scripts,tmp,runtime,app,code}
[root@php ~]# mkdir -p /docker/system/centos-base/conf/
[root@php ~]# mkdir -p /docker/app-environment/nginx_php/{nginx,php,conf}
[root@php ~]# mkdir -p /docker/app/xiaohuang/{code,conf}

4.2 centos-base的Dockerfile

[root@php ~]# cat /docker/system/centos-base/Dockerfile 
#Docker for CentOS

#base imamge
FROM centos:7

#who
MAINTAINER JY.H

#init base
#RUN yum -y install wget
#RUN yum -y install ntpdate
RUN rm -f /etc/localtime
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#RUN ntpdate cn.pool.ntp.org
#RUN hwclock -w
ADD ./conf/limits.conf /etc/
RUN echo "ulimit -n 65535" >> /etc/profile
RUN echo "ulimit -u 65535" >> /etc/profile
RUN echo "ulimit -d unlimited" >> /etc/profile
RUN echo "ulimit -m unlimited" >> /etc/profile
RUN echo "ulimit -s unlimited" >> /etc/profile
RUN echo "ulimit -t unlimited" >> /etc/profile
RUN echo "ulimit -v unlimited" >> /etc/profile
RUN source /etc/profile

4.2.1 配置最大打开文件数

[root@php ~]# cat /docker/system/centos-base/conf/limits.conf
* soft noproc 65535
* hard noproc 65535
* soft nofile 10240
* hard nofile 10240

4.3.1配置php-nginx的基础镜像Dockerfile

[root@php ~]# vim /docker/app-environment/nginx_php/Dockerfile

#Base image
FROM xiaohuang/centos7:base

#Maintainer
MAINTAINER JY.H

#add user www
RUN useradd -s /sbin/nologin -M www
RUN yum -y install epel-release
RUN yum -y install supervisor
RUN yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel openssl-devel
RUN yum -y install freetype-devel libpng-devel libcurl-devel libxslt-devel gd-devel
RUN yum -y install mhash mcrypt libmcrypt-devel

ADD ./nginx/nginx-1.12.2 /usr/local/nginx
ADD ./php/php-5.6.9 /usr/local/php-5.6.9
RUN ln -s /usr/local/php-5.6.9 /usr/local/php


ADD ./conf/supervisord.conf /etc/supervisord.conf
ADD ./conf/app-supervisor.ini /etc/supervisord.d/

4.3.2配置app-supervisor.ini多进程管理的文件

[root@php ~]# vim /docker/app-environment/nginx_php/conf/app-supervisor.ini
[program:php]
command=/usr/local/php/sbin/php-fpm
process_name=%(program_name)s
autostart=true

[program:nginx]
command=/usr/local/nginx/sbin/nginx
process_name=%(program_name)s
autostart=true
stdout_logfile=/tmp/app.log
stderr_logfile=/tmp/app.err

4.3.3配置supervisord.conf

root@php ~]# vim /docker/app-environment/nginx_php/conf/supervisord.conf
[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
[include]
files = supervisord.d/*.ini

4.4.1配置php-nginx的镜像Dockerfile

[root@php xiaohuang]# vim /docker/app/xiaohuang/Dockerfile 

#Base image
FROM xiaohuang/php-nginx:version-0.0.0

#Maintainer
MAINTAINER bonzi.Hu
ADD ./code/xiaohuang /usr/local/nginx/html/xiaohuang
ADD ./conf/nf/www.xiaohuang.com.conf /us /usr/local/nginx/conf.d/.d/www.xiaohuang.com.conf



CMD
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]

4.4.2配置容器里的nginx配置文件www.xiaohuang.com.conf

[root@php xiaohuang]# vim /docker/app/xiaohuang/conf/www.xiaohuang.com.conf

server {
    listen       80;
    server_name  www.xiaohuang.com;
    root   html/xiaohuang;

    location / {
       index index.php index.html index.htm;
    }
    location ~ .*\.(php|php5)?$ {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
       expires 3650d;
    }
    location ~ .*\.(js|css)?$ {
       expires 365d;
    }
    location ~ ^/images/.*\.(php|php5|sh|pl|py)$ {
            deny all;
    }
    location ~ ^/static/.*\.(php|php5|sh|pl|py)$ {
            deny all;
    }
    location ~ ^/data/.*\.(php|php5|sh|pl|py)$ {
            deny all;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

4.5配置docker-compose的启动文件

[root@php scripts]# vim docker-compose.yml

version: '2'
services:
xiaohuang-v1:
    image: xiaohuang/php-nginx:version-1.1.1
    restart: always
    container_name: xiaohuang-v1
    ports:
        - “2000:80”
xiaohuang-v2:
    image: xiaohuang/php-nginx:version-1.1.1
    restart: always
    container_name: xiaohuang-v2
    ports:
        - "2001:80"

4.6 创建镜像

[root@php /]# docker pull centos:7
[root@php /]# docker build -t xiaohuang/centos7:base /usr/my/docker/system/centos-base/
[root@php /]# docker build -t xiaohuang/php-nginx:version-0.0.0 /usr/my/docker/app-environment/nginx_php/
[root@php /]# docker build -t xiaohuang/php-nginx:version-1.1.1 /usr/my/docker/app/xiaohuang/

5.启动docker-compose

cd /usr/my/docker/scripts/
/usr/bin/docker-compose up -d
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,268评论 1 39
  • 简书_我爱你!认识简书是在今年的六月中旬。因为本人的身体原因,2017年初与死神擦肩而过,那段时间总想着随时有...
    寒桦阅读 718评论 60 85
  • 那些翻着波纹 收集笑脸和星光的叶子 还是会巴巴念着树上时 抱琴声枕月华 等待晨起伸懒腰的光阴 唯有她掌心的露水是真
    沐朝阅读 128评论 0 3
  • 之前搭建了Sonar 服务来管理分析代码,主要用于项目整体分析,不便于开发时发现问题。后来发现有个和IDEA集成的...
    同桌的桌阅读 5,051评论 0 1
  • 我不想 文||与你相识 我不想 从你的视线消失 那些牵魂的热烈 还在心头萦绕 我不想 隐藏所有情感 你给的柔情 是...
    与你相识_40fa阅读 156评论 2 4