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
    

      成功后查看

      页面访问

  • 相关阅读:
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    asp.net session对象的持久化
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    小白也能看懂的约瑟夫环问题
  • 原文地址:https://www.cnblogs.com/minseo/p/10146982.html
Copyright © 2011-2022 走看看