docker-composer的使用

1, 用了别人现成的博客cms,发现现在都习惯自己打包环境了,学习了一下。
看了很多教程,并没什么用,docker和docker-composer的安装。
1, 建立一个目录,比如docker-composer, 记住,这个目录名就是你docker里面服务组的名字。


image.png

2, 然后你只需要在里面创建文件docker-compose.yml, 其内容是

version: "3"

services:
#本地镜像名称
    nginx:
#云端拉取镜像名称
        image: nginx
#映射目录
        volumes:
            - ./sites:/etc/nginx/conf.d
            - ./www:/www
#网络名称, 注意这里只要设置成同一个网络名,他们互相之间就能通信了
        networks:
            - lnmp
# 依赖,nginx依赖php是因为,你配置文件里就有依赖php的配置
        depends_on:
            - php
#开启端口
        expose:
            - "80"
#映射端口
        ports:
            - "8080:80"
#以下是用户,权限,时间设置
        user: root
        privileged: true
        environment:
            - TZ=Asia/Shanghai
    php:
        image: kudang/php
        volumes:
            - ./www:/www
        networks:
            - lnmp
        user: root
        privileged: true
        depends_on:
            - mariadb
            - redis
        expose:
            - "9000"
        environment:
            - TZ=Asia/Shanghai

    mariadb:
        image: mariadb
        volumes:
            - ./data/mariadb:/var/lib/mysql
        networks:
            - lnmp
        expose:
            - "3306"
        environment:
            - TZ=Asia/Shanghai
            - "MYSQL_DATABASE=myBlog"
            - "MYSQL_USER=myBlog"
            - "MYSQL_PASSWORD=myBlog"
            - "MYSQL_ROOT_PASSWORD=myBlog"
    redis:
        image: redis
        volumes:
            - ./data/redis:/data
        networks:
            - lnmp
        expose:
            - "6379"
networks:
    lnmp:

配置就不讲了,比如mysql里面的用户设置,一眼就能看懂,更多参数参考文档。 就是你docker run 时一切参数都能指定。
挨个看下参数意思。值得一提的是,官方的docker镜像下载速度慢,我们一般配置成阿里的。但你去阿里搜索镜像,其实找不到kudang/php,猜测是阿里直接引用的官方镜像,做了某种加速处理。
4,总结一下,只要有这个文件,直接

docker-composer up

然后就能获取图片上的服务集合,就这么简单。像data,www等目录都是自动生成的。
5, 还一点, 数据库配置,root的账号密码配置里面都有,然后当你代码里像连接数据库时

try {
    $dbh = new PDO('mysql:host=mariadb;port=3306;dbname=mysql', 'root', 'myBlog');
    foreach($dbh->query('SELECT * from user') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

这里注意,重要的是你连接地址不用再写localhost, 或127.0.0.1,(实际上写了你也连接不上), 可直接写容器名字。这里的名字是docker-compose.yml里面配置的名字,不是图片上的名字。可以 docker ps查看下,是image的名字。
还有一个问题,是nginx, sites文件夹里,添加一个后缀为.conf的文件,比如de.conf, 内容是

server {
    listen       80;
    server_name  localhost;

    charset utf-8;
    access_log  /var/log/nginx/coreblog.access.log  main;

    root   /www;
    index  index.php index.html index.htm;

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

这个是你nginx的配置文件
我自己在
https://hub.docker.com/search?q=php-fpm&type=image
找到的
image: bitnami/php-fpm
镜像,是php7.4的
这个就很好玩,就比如说,我想换个php版本。把配置文件里面,改下php
image: phpdockerio/php7-fpm
然后执行命令

docker-compose up

在www.下简历index.php, 内容

<?php
phpinfo();

上面镜像php是7.0版本。 版本就换好了。有人和我杠说宝塔点下鼠标就完成了。 其实是不同的东西。这里比如要添加esearch,或 rabbitMQ, 配置文件里面添加,up,一下就完成。

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