zoukankan      html  css  js  c++  java
  • docker随笔9--docker-compose安装lnmp环境

    一个项目往往需要多个容器,容器与容器之间存在依赖关系,数量太多,启动是输入的命令太多,为了解决这些问题,采用docker-compose来完成,通过编写docker-compose.yml文件,启动项目,可以类比node里的package.json,执行编译只需npm build,docker-compose编译执行只需

    docker-compose up -d

    1.首先是安装docker-compose:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose

    2.构建目录结构:

    我的目录结构如下

    ----web:
     |
     |---------nginx
     |----------------conf
     |----------------vhost
     |----------------web
     |---------php
     |---------mysql 

    3.下面是关于docker-compose的参数说明:

    version : "3" #docker-compose的版本
    services: #容器的集合
            mysql: #项目名称
                    image: mysql:5.7 #镜像名称,如果是通过dockerfile创建的可以使用build属性
                    container_name: mysql  #容器名称,如果没有这个属性的话,docker-compose会随机分配一个名字给容器
                    privileged: true    #允许操作的表示,如果不加的话会出现类似,permission deny的错误
                    ports:
                            - 3307:3306  #开放宿主机和容器的映射端口
                    environment:
                            MYSQL_ROOT_PASSWORD: root  #mysql镜像中的环境变量
            php:
                     image: php:7.2-fpm
                     container_name: php
                     privileged: true
                     ports: 
                            - 9001:9000
                     links:
                             - mysql  #容器之间进行关联
    
                     volumes:
                             - /docker/wwwroot:/www/web  #挂载卷,需要注意的是,php在以模块的形式加载到nginx的时候,需要他们两个的目录结构一致,否则nginx无法加载php,但是 html等静态问价可以正常访问。
    
            nginx:
                     image:  nginx
                     container_name: nginx
                     privileged: true
                     links:
                             - php
                     ports:
                             - 8088:80
                     volumes:
                             - ./nginx/vhost:/www/nginx/vhost
                             - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
                             - ./nginx/log:/www/nginx/log
                             - /docker/wwwroot:/www/web
    
            phpmyadmin:
                    image: phpmyadmin/phpmyadmin
                    container_name: phpmyadmin
                    privileged: true
                    links:
                            - mysql
                    ports: 
                            - 7001:80
                    environment:
                            MYSQL_ROOT_PASSWORD: root
                            PMA_HOST: mysql
    
            redis: 
                    image: redis:4.0.14
                    container_name: redis
                    privileged: true
                    ports:
                            - 6379:6379
            mongo:
                    image: mongo
                    restart: always
                    ports:
                            - 27017:27017

    4.修改nginx.conf配置:

    user  nginx;
    worker_processes  1;
    
    error_log  /www/nginx/log/error.log warn;
    pid        /www/nginx/log/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /www/nginx/log/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /www/nginx/vhost/*.conf;
    }

    5.修改default.conf配置

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
        root    /www/web;
        location / {
            index  index.html index.htm index.php;
        try_files $uri $uri/ $uri.php?$args;
        }
    
        #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 ~ .php$ {
            
            fastcgi_index  index.php;
            fastcgi_pass   php:9000;
            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;
        #}
    }

    6.访问localhost:8088端口,并在web目录下新增test.php,通过localhost:8088/test 访问

  • 相关阅读:
    SharePoint 部署WebPart时 遇到"未能加载文件或程序集"错误
    SharePoint List ListItem 增删改 新增 修改 删除
    SharePoint 工作流错误日志
    asp.net网页中调用c#写的dll文件
    域帐号查询与更新
    POJ2386:Lake Counting(DFS) java程序员
    POJ2225:Asteroids!(BFS) java程序员
    POJ1019:Number Sequence(组合计数) java程序员
    POJ2446:Chessboard(二分匹配) java程序员
    POJ1018:Communication System(枚举+搜索剪枝) java程序员
  • 原文地址:https://www.cnblogs.com/callmelx/p/11099562.html
Copyright © 2011-2022 走看看