美文网首页
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