zoukankan      html  css  js  c++  java
  • Dockerfile搭建lnmp环境

    一 先分别创建对应的镜像Dockerfile文件,文件名称最好直接命名为Dockerfile

    1.1 创建nginx镜像

    创建目录nginx-1.15.5,进入目录创建Dockerfile文件

    From nginx:1.15.5
    #维护者信息
    MAINTAINER duaijing<291201754@qq.com>
    #时区
    ENV TZ Asia/Shanghai
    RUN date -R
    #容器启动时执行指令
    CMD ["nginx", "-g", "daemon off;"]

    1.2 创建php镜像并安装对应扩展

    创建目录php-7.3.29-fpm,进入目录创建Dockerfile文件

    From php:7.3.29-fpm
    #维护者信息
    MAINTAINER duaijing<291201754@qq.com>
    #时区
    ENV TZ Asia/Shanghai
    RUN date -R
    #RUN docker-php-ext-install bcmath dom fileinfo filter ftp gd gmp hash iconv imap json mbstring mysqli odbc opcache pdo pdo_mysql pdo_odbc phar reflection session snmp soap sockets zip
    #RUN docker-php-ext-install mysqli opcache pdo_mysql
    WORKDIR /working
    RUN apt-get update --fix-missing && apt-get install -y 
        libzip-dev libpng-dev libjpeg-dev libfreetype6-dev  
        && docker-php-ext-configure gd --with-freetype-dir=/usr/include --with-jpeg-dir=/usr/include/jpeg 
        && docker-php-ext-install gd mysqli opcache pdo_mysql gd zip
    ENV PHPREDIS_VERSION 4.0.1
    ENV PHPSWOOLE_VERSION 4.2.13
    RUN pecl install redis-$PHPREDIS_VERSION 
        docker-php-ext-enable redis
    # install composer new
    # https://getcomposer.org/installer | https://install.phpcomposer.com/installer
     RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
         && php composer-setup.php 
         && php -r "unlink('composer-setup.php');" 
         && mv composer.phar /usr/local/bin/composer 
         && composer config -g repo.packagist composer https://packagist.laravel-china.org
    RUN apt-get install -y git
    # clear
    RUN rm -rf /var/cache/apt/* 
        && rm -rf /var/lib/apt/lists/*
    RUN mkdir /var/lib/sessions 
        && chmod o=rwx -R /var/lib/sessions
    #容器启动时执行指令
    CMD ["php-fpm"]

    1.3 创建mysql镜像

    创建目录mysql-8.0.18,进入目录创建Dockerfile文件

    From mysql:8.0.18
    #维护者信息
    MAINTAINER duaijing<291201754@qq.com>
    #时区
    ENV TZ Asia/Shanghai
    RUN date -R
    #容器启动时执行指令
    CMD ["mysqld"]

    二 运行镜像

    2.1 build 镜像 镜像名称以及版本,一定要注意最后面的点,不能省略

    docker build -t nginx:v1 .

    如果文件名称不是标准的Dockerfile可以加参数-f

    docker build -f Dockerfile文件路径 -t nginx:v1 .

    2.2 可以通过单独运行容器运行参考:https://www.cnblogs.com/jingxiaoniu/p/12557663.html

    2.3 通过docker-compose运行(推荐)

    2.3.1 需要创建一个yaml文件,创建docker-compose.yml

    version: '3.7'
    services:
      nginx:
        build: ./nginx-1.15.5
        ports:
          - "8802:80" #nginx
        restart: always
        tty: true
        container_name: nginx
        volumes:
          - ~/docker/nginx/www:/usr/share/nginx/html
          - ~/docker/nginx/nginx-log:/var/log/nginx
          - ~/docker/nginx/nginx-conf:/etc/nginx
        networks:
         - lnmp-networks
      php:
        build: ./php-7.3.29-fpm
        tty: true
        restart: always
        container_name: php
        volumes:
          - ~/docker/php/php-log:/var/log/php
          - ~/docker/php/php-conf:/usr/local/etc/php
        depends_on:
          - nginx
        networks:
         - lnmp-networks
      mysql:
        build: ./mysql-8.0.18
        container_name: mysql
        tty: true
        restart: always
        ports:
          - "3309:3306" #mysql
        volumes:
          - ~/docker/mysql/mysql-conf:/etc/mysql
          - ~/docker/mysql-log:/var/log/mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
        networks:
          - lnmp-networks
    networks:
     lnmp-networks:

    注意:因为我们上文文件名称直接就是Dockerfile,所以可以直接build,如果文件名不是Dockerfile,需要加参数指定路径并指定文件

    2.3.2 最后运行

    docker-compose up

    注意:如果我们文件名称不是docker-compose.yml,需要加参数-f

    docker-cmpose -f docker-compose.yml up 

    以上就是今天的全部内容!

  • 相关阅读:
    Redhat Lighttpd安装配置
    PHP正则表达式学习参考的文章
    50点提高PHP编程效率 引入缓存提升性能
    位运算符C语言
    Redhat Mongodb学习笔记
    Redhat Cacti安装配置
    HTTP 状态代码表示什么意思?
    map容器对象插入数据的4种方式
    socket网络间通信初识
    仿美团项目-第一部分
  • 原文地址:https://www.cnblogs.com/jingxiaoniu/p/15148382.html
Copyright © 2011-2022 走看看