美文网首页
docker-composer的使用

docker-composer的使用

作者: 蛐蛐儿阳 | 来源:发表于2020-09-06 09:25 被阅读0次

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,一下就完成。

相关文章

网友评论

      本文标题:docker-composer的使用

      本文链接:https://www.haomeiwen.com/subject/fuoqektx.html