zoukankan      html  css  js  c++  java
  • Docker Compose

        Compose是什么

      Compose是一个定义和管理多容器的工具,也是一种容器编排工具,前身是Pig,使用Python语言编写。使用Compose配置文件描述多个容器应用的构架,比如使用什么镜像,数据卷,网络,映射端口等;然后用一条命令管理所有服务,比如启动,停止,重启等 

      系统为ubuntu18.04 切换root用户使用命令 sudo -i

      安装(也可以github下载二进制包安装)

    sudo apt-get install python-pip
    sudo pip install docker-compose
    

      查看版本

    docker-compose --version
    

      安装docker

    apt install docker.io
    

      查看版本

    docker info

      docker-compose读取文件夹下面的yml文件

      编辑文件docker-compose.yml

    version: '3'
    services:
      web:
        build: .
        ports:
          - "8888:80"
    

      version:定义版本有1,2,3版本

          services:定义服务

          web:服务名是web

         build:在本目录构建

         ports:端口映射8888映射容器的80端口

      编辑Dockerfile

    FROM centos:6
    MAINTAINER liuyueming
    RUN yum install -y httpd php php-gd php-mysql
    RUN echo "<?php phpinfo()?>" > /var/www/html/index.php
    CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
    EXPOSE 80

      PS:参数D要加- 否则启动失败

      文件目录如下

      构建

    docker-compose up
    

      构建后会生成名为php_web的镜像(镜像默认命名规则为文件夹_服务名)

      完毕查看

    docker-compose ps
    docker ps
    

      web页面访问 http://ip:8888 

      一键配置LNMP环境

      配置文件如下

      docker-compose.yml

    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 80:80
        links:
          - php:php-cgi
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      php:
        hostname: php
        build: ./php
        links:
          - mysql:mysql-db
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      mysql:
        hostname: mysql
        image: mysql:5.6
        ports:
          - 3306:3306
        volumes:
          - ./mysql/conf:/etc/mysql/conf.d
          - ./mysql/data:/var/lib/mysql
        # command: --character-set-server=utf8
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: wordpress
          MYSQL_USER: user
          MYSQL_PASSWORD: user123
    

      mysql/conf/my.cnf

    [mysqld]
    user=mysql
    port=3306
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    pid-file=/var/run/mysqld/mysql.pid
    log_error=/var/log/mysql/error.log
    character_set_server = utf8
    max_connections=3600
    

      nginx/Dockerfile

    FROM centos:6
    MAINTAINER liuyueming
    RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
    ADD nginx-1.12.1.tar.gz /tmp
    RUN cd /tmp/nginx-1.12.1 && ./configure --prefix=/usr/local/nginx && make -j 2 && make install
    RUN rm -f /usr/local/nginx/conf/nginx.conf 
    COPY nginx.conf /usr/local/nginx/conf
    
    EXPOSE 80
    CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
    

      nginx/nginx.conf

    user  root; 
    worker_processes  auto; 
    
    error_log  logs/error.log  info;
    
    pid        logs/nginx.pid; 
    
    
    events {
        use epoll; 
    }
    
    http {
    
        include       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 logs/access.log main;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen 80;
            server_name localhost;
            root html;
            index index.html index.php;
    
            location ~ .php$ {
                root html;
                fastcgi_pass php-cgi:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
                include fastcgi_params;
            }
        }
    }
    

      php/Dockerfile

    FROM centos:6
    MAINTAINER lizhenliang
    RUN yum install -y gcc gcc-c++ gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
    ADD php-5.6.31.tar.gz /tmp/
    RUN cd /tmp/php-5.6.31 && 
        ./configure --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --with-mysql --with-mysqli 
        --with-openssl --with-zlib --with-curl --with-gd 
        --with-jpeg-dir --with-png-dir --with-iconv 
        --enable-fpm --enable-zip --enable-mbstring && 
        make -j 4 && make install && 
        cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && 
        sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && 
        cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && 
        chmod +x /etc/init.d/php-fpm 
    COPY php.ini /usr/local/php/etc
    
    EXPOSE 9000
    CMD /etc/init.d/php-fpm start && tail -F /var/log/messages
    

      php/php.ini

    [PHP]
    engine = On
    short_open_tag = Off
    asp_tags = Off
    precision = 14
    output_buffering = 4096
    zlib.output_compression = Off
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 17
    disable_functions =
    disable_classes =
    zend.enable_gc = On
    expose_php = On
    max_execution_time = 30
    max_input_time = 60
    memory_limit = 128M
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    display_errors = Off
    display_startup_errors = Off
    log_errors = On
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    report_memleaks = On
    track_errors = Off
    html_errors = On
    variables_order = "GPCS"
    request_order = "GP"
    register_argc_argv = Off
    auto_globals_jit = On
    post_max_size = 8M
    auto_prepend_file =
    auto_append_file =
    default_mimetype = "text/html"
    default_charset = "UTF-8"
    doc_root =
    user_dir =
    enable_dl = Off
    file_uploads = On
    upload_max_filesize = 2M
    max_file_uploads = 20
    allow_url_fopen = On
    allow_url_include = Off
    default_socket_timeout = 60
    [CLI Server]
    cli_server.color = On
    [Date]
    date.timezone = Asia/Shanghai
    [filter]
    [iconv]
    [intl]
    [sqlite3]
    [Pcre]
    [Pdo]
    [Pdo_mysql]
    pdo_mysql.cache_size = 2000
    pdo_mysql.default_socket=
    [Phar]
    [mail function]
    SMTP = localhost
    smtp_port = 25
    mail.add_x_header = On
    [SQL]
    sql.safe_mode = Off
    [ODBC]
    odbc.allow_persistent = On
    odbc.check_persistent = On
    odbc.max_persistent = -1
    odbc.max_links = -1
    odbc.defaultlrl = 4096
    odbc.defaultbinmode = 1
    [Interbase]
    ibase.allow_persistent = 1
    ibase.max_persistent = -1
    ibase.max_links = -1
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
    ibase.dateformat = "%Y-%m-%d"
    ibase.timeformat = "%H:%M:%S"
    [MySQL]
    mysql.allow_local_infile = On
    mysql.allow_persistent = On
    mysql.cache_size = 2000
    mysql.max_persistent = -1
    mysql.max_links = -1
    mysql.default_port =
    mysql.default_socket =
    mysql.default_host =
    mysql.default_user =
    mysql.default_password =
    mysql.connect_timeout = 60
    mysql.trace_mode = Off
    [MySQLi]
    mysqli.max_persistent = -1
    mysqli.allow_persistent = On
    mysqli.max_links = -1
    mysqli.cache_size = 2000
    mysqli.default_port = 3306
    mysqli.default_socket =
    mysqli.default_host =
    mysqli.default_user =
    mysqli.default_pw =
    mysqli.reconnect = Off
    [mysqlnd]
    mysqlnd.collect_statistics = On
    mysqlnd.collect_memory_statistics = Off
    [OCI8]
    [PostgreSQL]
    pgsql.allow_persistent = On
    pgsql.auto_reset_persistent = Off
    pgsql.max_persistent = -1
    pgsql.max_links = -1
    pgsql.ignore_notice = 0
    pgsql.log_notice = 0
    [Sybase-CT]
    sybct.allow_persistent = On
    sybct.max_persistent = -1
    sybct.max_links = -1
    sybct.min_server_severity = 10
    sybct.min_client_severity = 10
    [bcmath]
    bcmath.scale = 0
    [browscap]
    [Session]
    session.save_handler = files
    session.use_strict_mode = 0
    session.use_cookies = 1
    session.use_only_cookies = 1
    session.name = PHPSESSID
    session.auto_start = 0
    session.cookie_lifetime = 0
    session.cookie_path = /
    session.cookie_domain =
    session.cookie_httponly =
    session.serialize_handler = php
    session.gc_probability = 1
    session.gc_divisor = 1000
    session.gc_maxlifetime = 1440
    session.referer_check =
    session.cache_limiter = nocache
    session.cache_expire = 180
    session.use_trans_sid = 0
    session.hash_function = 0
    session.hash_bits_per_character = 5
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
    [MSSQL]
    mssql.allow_persistent = On
    mssql.max_persistent = -1
    mssql.max_links = -1
    mssql.min_error_severity = 10
    mssql.min_message_severity = 10
    mssql.compatibility_mode = Off
    mssql.secure_connection = Off
    [Assertion]
    [COM]
    [mbstring]
    [gd]
    [exif]
    [Tidy]
    tidy.clean_output = Off
    [soap]
    soap.wsdl_cache_enabled=1
    soap.wsdl_cache_dir="/tmp"
    soap.wsdl_cache_ttl=86400
    soap.wsdl_cache_limit = 5
    [sysvshm]
    [ldap]
    ldap.max_links = -1
    [mcrypt]
    [dba]
    [opcache]
    [curl]
    [openssl]
    

      wwwroot/test.php

    <?php phpinfo()?>
    

      构建

    docker-compose up
    

      成功后查看

      页面访问

  • 相关阅读:
    iphone dev 入门实例5:Get the User Location & Address in iPhone App
    iphone dev 入门实例4:CoreData入门
    iphone dev 入门实例3:Delete a Row from UITableView
    iphone dev 入门实例2:Pass Data Between View Controllers using segue
    iphone dev 入门实例1:Use Storyboards to Build Table View
    Learning Core Data 1
    Apple dev travel
    数字信封工作原理
    Linux编程概念
    ubuntu16.04 安装 libnfc
  • 原文地址:https://www.cnblogs.com/minseo/p/10146982.html
Copyright © 2011-2022 走看看