美文网首页
Docker Compose一键搭建lnmp开发环境

Docker Compose一键搭建lnmp开发环境

作者: 非资深技术人 | 来源:发表于2021-08-07 17:56 被阅读0次

    docker compose是用来配置和运行多容器服务的工具(适用于单机,集群请使用k8s),通过docker-compose命令可轻松对多个容器进行如下操作:

    (1)启动,停止和重建服务
    (2)查看正在运行的服务的状态
    (3)通过流输出正在运行的服务的日志
    (4)对某个服务执行命令

    安装docker compose, 官方文档:https://docs.docker.com/compose/install/

    # 下载docker compose(Linux版本)
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    # 增加执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    # 成功检查
    docker-compose -v
    

    执行docker compose准备步骤

    1、准备好需要修改的配置文件(比如nginx.conf等),如果需要自己构建Dockerfile文件,也请准备好Dockerfile
    2、在 docker-compose.yml 中定义好各个容器的相关配置
    3、执行docker-compose up -d命令,docker compose会帮你完成一整套拉取镜像/构建镜像,启动容器等操作。
    docker-compose.yml是docker compose用来配置容器应用的配置文件,默认就叫docker-compose.yml,最好是放在当前操作的目录下,当然也可以单独指定文件路径。

    docker compose的常用命令

    #启动并后台运行所有的服务 
    docker-compose up  -d 
    #列出项目中目前的所有容器 
    docker-compose ps 
    #停止某个服务 
    docker-compose stop 服务名 
    #启动某个服务 
    docker-compose start 服务名 
    #停止并删除容器、网络、卷、镜像 
    docker-compose down
    

    docker compose 搭建lnmp开发环境

    nginx 准备配置文件

    # nginx挂载目录
    mkdir ~/lnmp && cd ~/lnmp
    mkdir nginx && cd nginx && mkdir conf && cd conf
    # nginx默认配置文件
    vi default.conf
    

    nginx默认配置文件内容如下:

    server {
        listen       80;
        root   /usr/share/nginx/html;
        index   index.html index.htm index.php;
    
    
        # 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;
        }
    
        location / {
            index  index.html index.htm index.php ;
            try_files $uri $uri/ /index.php?$query_string;
            autoindex  on;
        }
    
    
        location ~ \.php$ {
            #php73是容器命名
            fastcgi_pass   php73:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  PATH_INFO $fastcgi_path_info;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        }
    
    }
    

    在docker-compose.yml文件中定义好我们需要的nginx,php和mysql相关的配置,如下:

    cd ~/lnmp
    vi docker-compose.yml
    
    #定义docker compose yml版本
    version: "3"  
    #定义我们的服务对象
    services:   
    #自定义的服务名称
      nginx:    
         #镜像名称,默认拉取本地镜像,没有的话从远程获取
         image: nginx:latest
         #自定义容器的名称
         container_name: c_nginx
         #将宿主机的80端口映射到容器的80端口
         ports:
          - "80:80"
         #将宿主机的~/lnmp/www目录和容器的/usr/share/nginx/html目录进行绑定,并设置rw权限
         #将宿主机的~/lnmp/nginx/conf/default.conf和容器的/etc/nginx/conf.d/default.conf进行绑定
         volumes:
          - ~/lnmp/www/:/usr/share/nginx/html/:rw
          - ~/lnmp/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
         #设置环境变量,当前的时区
         environment:
          TZ: "Asia/Shanghai"
         #容器是否随docker服务启动重启
         restart: always
         #容器加入名为lnmp的网络
         networks:
          - lnmp
      php:
        image: php:7.3.29-fpm
        container_name: php73
        volumes:
          - ~/lnmp/www/:/var/www/html/:rw
        restart: always
        cap_add:
          - SYS_PTRACE
        networks:
          - lnmp
    
      mysql:
        image: mysql:5.6
        container_name: mysql56
        ports:
          - "3306:3306"
        volumes:
          - ~/lnmp/mysql/data:/var/lib/mysql/:rw
        restart: always
        networks:
          - lnmp
        environment:
          MYSQL_ROOT_PASSWORD: "123456"
          TZ: "Asia/Shanghai"
    networks:   
      #创建了一个自定义的网络叫做lnmp
      lnmp:
    

    执行docker-compose up -d命令,等命令执行完,我们的lnmp安装完成

    执行docker compose

    下面,我们来测试下安装是否正常,在~/lnmp/www/下新建一个index.html文件,并输出welcome to nginx!!


    在~lnmp/www/目录下新建test.php文件,文件里面写上phpinfo函数,测试下php配置是否正常,访问如下


    image.png

    在~lnmp/www/目录下新建mysql.php文件,文件里面写上连接mysql的代码,测试下mysql配置是否正常

    需要先进入php容器安装mysqli pdo等模块

    #宿主机
    docker exec -it php73 /bin/bash
    #php容器
    docker-php-ext-install pdo pdo_mysql mysqli
    docker-php-ext-enable pdo pdo_mysql mysqli
    exit
    #宿主机重启服务
    docker-compose restart
    
    <?php
    // 创建连接
    $conn = new mysqli('mysql56','root','123456');
    if($conn->connect_error){
        die("连接失败,错误:" . $conn->connect_error);
    }
    echo "connect success";
    
    <?php
    try {
        $pdo = new PDO("mysql:host=mysql56","root","123456");
        $pdo = null;
        print "连接成功";
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
    

    相关文章

      网友评论

          本文标题:Docker Compose一键搭建lnmp开发环境

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