博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker--------docker-compose LNMP实战
阅读量:6280 次
发布时间:2019-06-22

本文共 6936 字,大约阅读时间需要 23 分钟。

1. 背景

    与  相关内容在前面文章已经详述,这里就不再一一说明。

2. 环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@docker ~]
# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
  
[root@docker ~]
# uname -r
3.10.0-327.36.3.el7.x86_64
 
[root@docker ~]
# docker version
Client:
 
Version:         1.12.6
 
API version:     1.24
 
Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64
 
Go version:      go1.7.4
 
Git commit:      1398f24
/1
.12.6
 
Built:           Fri May 26 17:28:18 2017
 
OS
/Arch
:         linux
/amd64
 
[root@docker ~]
# docker-compose version
docker-compose version 1.14.0, build c7bdf9e
docker-py version: 2.3.0
CPython version: 2.7.5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
 
[root@docker ~]
# ifconfig eth0 | sed -n 2p | awk '{print $2}'
192.168.60.150

3. 制作镜像

  * 构建php dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Php-fpm
#Version 1.0.1
#Author lisea
 
#Base Image
FROM centos:7
 
#Maintainer
MAINTAINER lisea cnlisea@126.com
 
#Commands
RUN rpm -ivh http:
//mirrors
.aliyun.com
/epel/epel-release-latest-7
.noarch.rpm
RUN yum 
install 
php-fpm -y
RUN 
sed 
-i -e 
's\listen = 127.0.0.1:9000\listen = 0.0.0.0:9000\g' 
-e 's\listen.allo
wed_clients = 127.0.0.1\;listen.allowed_clients = 127.0.0.1\g' 
/etc/php-fpm
.d
/www
.c
onf
RUN 
sed 
-i 
's\;daemonize = yes\daemonize = no\g' 
/etc/php-fpm
.conf
 
EXPOSE 9000
CMD [
"php-fpm"
]

  * 构建 php 镜像

1
[root@docker php-fpm]
# docker build -t lisea/php-fpm:v1.0.1 .

   * 准备nginx配置nginx.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
user nginx nginx;
worker_processes auto;
daemon off;
 
error_log 
/var/log/error_nginx
.log crit;
pid 
/var/run/nginx
.pid;
worker_rlimit_nofile 102400;
 
events {
  
use epoll;
  
worker_connections 102400;
  
multi_accept on;
}
 
http {
  
include mime.types;
  
default_type application
/octet-stream
;
  
server_names_hash_bucket_size 128;
  
client_header_buffer_size 4k;
  
large_client_header_buffers 4 32k;
  
client_max_body_size 1024m;
  
client_body_buffer_size 10m;
  
sendfile on;
  
tcp_nopush on;
  
keepalive_timeout 60;
  
server_tokens off;
  
tcp_nodelay on;
 
  
fastcgi_connect_timeout 300;
  
fastcgi_send_timeout 300;
  
fastcgi_read_timeout 300;
  
fastcgi_buffer_size 64k;
  
fastcgi_buffers 4 64k;
  
fastcgi_busy_buffers_size 128k;
  
fastcgi_temp_file_write_size 128k;
  
fastcgi_intercept_errors on;
 
  
#Gzip Compression
  
gzip 
on;
  
gzip_buffers 16 8k;
  
gzip_comp_level 6;
  
gzip_http_version 1.1;
  
gzip_min_length 256;
  
gzip_proxied any;
  
gzip_vary on;
  
gzip_types
    
text
/xml 
application
/xml 
application
/atom
+xml application
/rss
+xml application
/xhtml
+xml image
/svg
+xml
    
text
/javascript 
application
/javascript 
application
/x-javascript
    
text
/x-json 
application
/json 
application
/x-web-app-manifest
+json
    
text
/css 
text
/plain 
text
/x-component
    
font
/opentype 
application
/x-font-ttf 
application
/vnd
.ms-fontobject
    
image
/x-icon
;
  
gzip_disable 
"MSIE [1-6]\.(?!.*SV1)"
;
 
  
#If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
  
open_file_cache max=102400 inactive=20s;
  
open_file_cache_valid 30s;
  
open_file_cache_min_uses 1;
  
open_file_cache_errors on;
 
########################## vhost #############################
  
include conf.d/*.conf;
}

   * 准备nginx配置php服务相关 nginx_localhost_80.conf 文件

     php:9000是通过后面的--link 容器之间互联指定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
  
listen 80;
  
server_name localhost;
  
root 
/data/www
;
  
index index.html index.htm index.php;
 
  
location ~ [^/]\.php(/|$) {
    
fastcgi_pass php:9000;
    
#fastcgi_pass unix:/usr/local/php-fastcgi/php-fpm.sock;
    
fastcgi_index index.php;
    
include fastcgi.conf;
  
}
  
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    
expires 30d;
    
access_log off;
  
}
  
location ~ .*\.(js|css)?$ {
    
expires 7d;
    
access_log off;
  
}
  
location ~ /\.ht {
    
deny all;
  
}
}

   * 构建 nginx dockerfile 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Nginx
#Version 1.0.1
#Author lisea
 
#Base Image
FROM centos:7
 
#Maintainer
MAINTAINER lisea cnlisea@126.com
 
#Commands
RUN rpm -ivh http:
//mirrors
.aliyun.com
/epel/epel-release-latest-7
.noarch.rpm
RUN yum 
install 
nginx -y
ADD nginx.conf 
/etc/nginx/nginx
.conf
ADD nginx_localhost_80.conf 
/etc/nginx/conf
.d
/localhost_80
.conf
 
EXPOSE 80
CMD [
"nginx"
]

  * 构建 nginx 镜像

1
[root@docker nginx]
# docker build -t lisea/nginx:v1.0.1 .

   * 准备mariadb 启动脚本 startup.sh

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
if 
[ ! -f 
/var/lib/mysql/ibdata1 
]; 
then
        
mysql_install_db
        
chown 
mysql.mysql -R 
/var/lib/mysql
        
/usr/bin/mysqld_safe 
&
        
sleep 
10s
        
mysql -e 
"grant all privileges on *.* to 'root'@'%' identified by '123456'; FLUSH PRIVILEGES;"
        
kill 
-s TERM `
ps 
aux | 
grep 
mysqld | 
grep 
-
v 
'grep' 
awk 
'{print $2}'
`
        
sleep 
10s
fi
/usr/bin/mysqld_safe

 

  * 构建mariadb(mysql) dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Mariadb
#Version 1.0.1
#Author lisea
 
#Base Image
FROM centos:7
 
#Maintainer
MAINTAINER lisea cnlisea@126.com
 
#Commands
RUN rpm -ivh http:
//mirrors
.aliyun.com
/epel/epel-release-latest-7
.noarch.rpm
RUN yum 
install 
mariadb-server mariadb -y
ADD startup.sh 
/opt/startup
.sh
RUN 
chmod 
+x 
/opt/startup
.sh
 
EXPOSE 3306
CMD [
"/bin/bash"
,
"/opt/startup.sh"
]

   * 构建 mysql 镜像

1
[root@docker mysql]
# docker build -t lisea/mariadb:v1.0.1 .

   * 查看所有镜像

1
2
3
4
5
6
[root@docker lnmp]
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lisea
/mariadb       
v1.0.1              5925448a6fb6        3 minutes ago       493.6 MB
lisea
/nginx         
v1.0.1              f1aba93ce33d        52 minutes ago      391.4 MB
lisea
/php-fpm       
v1.0.1              d205ea9fcdba        About an hour ago   350.1 MB
docker.io
/centos    
7                   3bee3060bfc8        2 weeks ago         192.5 MB


4. 编写docker-compose

   * docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: 
"2"
services:
  
lnmp_nginx:
    
image: lisea
/nginx
:v1.0.1
    
ports:
      
"8080:80"
    
links:
      
"lnmp_php:php"
    
volumes:
      
/data/www
:
/data/www
  
lnmp_php:
    
image: lisea
/php-fpm
:v1.0.1
    
volumes:
      
/data/www
:
/data/www
  
lnmp_mariadb:
    
image: lisea
/mariadb
:v1.0.1
    
ports:
      
"3306:3306"
    
volumes:
      
/data/mariadb
:
/var/lib/mysql

   * 开始构建并运行 -d 指定后台运行

1
2
3
4
5
6
7
8
[root@docker lnmp]
# docker-compose up -d
Creating network 
"lnmp_default" 
with the default driver
Creating lnmp_lnmp_php_1 ... 
Creating lnmp_lnmp_mysql_1 ... 
Creating lnmp_lnmp_php_1
Creating lnmp_lnmp_php_1 ... 
done
Creating lnmp_lnmp_mariadb_1 ... 
done
Creating lnmp_lnmp_nginx_1 ... 
done

   * 查看端口监听状态

1
2
3
4
5
6
7
[root@docker lnmp]
# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID
/Program 
name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      975
/sshd               
tcp6       0      0 :::3306                 :::*                    LISTEN      15138
/docker-proxy- 
tcp6       0      0 :::8080                 :::*                    LISTEN      15320
/docker-proxy- 
tcp6       0      0 :::22                   :::*                    LISTEN      975
/sshd

5. 测试lnmp环境

  * 路径切换到nginx web目录 [/data/www]

1
[root@docker lnmp]
# cd /data/www/

   * index.php

1
2
3
<?php
  
phpinfo();
?>

   * 浏览器访问 ip:8080/index.php


6. 总结



以需求驱动技术,技术本身没有优略之分,只有业务之分。

      本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1940480,如需转载请自行联系原作者

你可能感兴趣的文章
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>