docker-compose的实践(lnmp的多容器服务)

前言

服务器技术日益高大上,docker持续火热。作为一个开发者,不使用docker,那就太落后。从去年就开始接触docker,在本地的开发中也使用了dokcer.但是还是处于不熟练状态。这2天抽空研究了docker-compose,将docker多容器组合进行了实践,以方便后期的软件部署的需要。

文件地址

下载

问题

使用docker-compose 实现Lnmp的搭建。
linux+nginx+mysql+php
docker 好处:

  • 环境的一致性。本地,测试,生产环境不再存在差异。
  • 生产环境下,运维的自动化和扩容方便。容易复制和迁移。

docker-compose的好处:

  • 批量管理docker,省时省力。

解决

  • 在本地创建一个文件夹,里面结构如下:
├── README.md
├── db_data    数据库文件存储目录
├── docker-compose.yml    docker-compose的配置文件
├── mysql
│   └── Dockerfile    mysql的dockfile文件。这里没用到。是空白
├── nginx
│   ├── Dockerfile   nginx的dockfile文件
│   └── default.conf   nginx的配置
├── php-fpm
│   ├── Dockerfile  php的dockfile文件
│   ├── php.ini     php的配置文件
│   ├── php.ini-development  php的开发配置文件
│   └── php.ini-production  php的生产配置文件
└── web    php项目代码
    ├── db.sql    数据库文件
    ├── index.html     
    ├── index.php   
    └── mysql.php  
  • 介绍下docker-compose的配置文件
#版本号
version: "3"
#服务
services:
    #mysql服务
    db:
      #服务器镜像
     image: mysql:latest
     #磁盘映射。./db_data 是宿主的目录。后者是容器里的目录。
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     # 端口映射。前者是宿主的。后者是容器里端口
     ports:
       - "3307:3306"
     #环境变量
     environment:
      #mysql的root密码
       MYSQL_ROOT_PASSWORD: 123456
       #容器会创建的数据库
       MYSQL_DATABASE: testdb
       #test用户
       MYSQL_USER: test
       #test用户的密码
       MYSQL_PASSWORD: 123456 
    #php-fpm服务
    php:
     volumes:
       - ./web:/www/web
      #依赖的服务。会在容器里的host文件里添加 一条记录。访问db,即可访问mysql的服务。
     depends_on:
       - db
       #服务器镜像构建的目录。会在该目录下寻找dockerfile构建镜像。
     build: ./php-fpm
     restart: always
    #nginx服务
    nginx:
     depends_on:
       - php
     volumes:
       - ./web:/www/web
     build: ./nginx
     ports:
       - "81:80"
     restart: always
  • 安装步骤

nginx的基础镜像

docker pull daocloud.io/library/nginx:1.13.0

php的基础镜像

docker pull daocloud.io/library/php:7.0.20-fpm

mysql的基础镜像

docker pull mysql:latest

执行服务编排,创建容器,启动php mysql nginx

docker-compose up -d
  • 访问测试

测试nginx

http://localhost:81/  

测试phpinfo

http://localhost:81/index.php

测试数据库

http://localhost:81/mysql.php
  • 遇到的坑
    • php找不到文件路径。
      nginx服务和php服务需要映射相同的路径。例如这里都是/www/web
      配置如下:
location ~ \.php$ {
        root           /www/web;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/web/$fastcgi_script_name;
        include        fastcgi_params;
    }
  • nginx转发php解析失败。
    主要问题是php的服务需要修改配置,默认的配置php-fpm只监控127.0.0.1地址。需要修改监控任意地址。
RUN sed -i -e 's/listen = 127.0.0.1:9000/listen = 9000/' /usr/local/etc/php-fpm.d/www.conf
  • php服务无法连接mysql配置。
    主要是php扩展的问题。这个问题其实很奇怪,按理基础镜像里应该包含这个。不知道为何没有。
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
  • 补充命令。
    停止容器
docker-compose stop

删除容器

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

推荐阅读更多精彩内容