• Dockerfile架设LNMP


    Dockerfile架设LNMP

    一、环境准备

    关闭防火墙

    2、拉取centos:7镜像

    dcoker pull centos:7
    
    • 1

    3、自定义网络

    docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
    
    • 1

    二、部署nginx(容器IP 为 172.18.0.10)

    mkdir /opt/nginx
    cd /opt/nginx/
    
    上传 nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目录中
    mkdir /opt/nginx/html
    tar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/html
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    img

    再其他主机修改nginx.conf 配置文件,并用scp传输到宿主机。

    img

    img

    下一步进入nginx目录,写nginx的Dockerfile文件脚本。

    vim Dockerfile
    
    FROM centos:7
    
    MAINTAINER this is nginx image 
    
    RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
    
    RUN useradd -M -s /sbin/nologin nginx
    
    ADD nginx-1.12.0.tar.gz /usr/local/src/
    
    WORKDIR /usr/local/src/nginx-1.12.0
    
    RUN ./configure \
    
    --prefix=/usr/local/nginx \
    
    --user=nginx \
    
    --group=nginx \
    
    --with-http_stub_status_module && make && make install
    
    ENV PATH /usr/local/nginx/sbin:$PATH
    
    ADD nginx.conf /usr/local/nginx/conf/
    
    \#ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/
    
    RUN chmod 777 -R /usr/local/nginx/html/
    
    EXPOSE 80
    
    EXPOSE 443
    
    ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
    
    
    创建镜像
    
    docker build -t nginx:lnmp .
    
    
    
    基于镜像创建docker 并指定ip和端口
    
    docker run -d --name nginx -p 80:80 -v /opt/nginx/html:/usr/local/nginx/html --net mynetwork --ip 172.18.0.10 nginx:lnmp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    三、部署mysql(容器IP 为 172.18.0.20)

    mkdir /opt/mysqld
    cd /opt/mysqld

    上传 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目录中 并把my.cnf配置文件也拖进来
    img

    vim Dockerfile
    
    FROM centos:7
    
    MAINTAINER this is mysql image 
    
    RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
    
    RUN useradd -M -s /sbin/nologin mysql
    
    ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
    
    WORKDIR /usr/local/src/mysql-5.7.20/
    
    RUN cmake \
    
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    
    -DSYSCONFDIR=/etc \
    
    -DSYSTEMD_PID_DIR=/usr/local/mysql \
    
    -DDEFAULT_CHARSET=utf8 \
    
    -DDEFAULT_COLLATION=utf8_general_ci \
    
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    
    -DWITH_BOOST=boost \
    
    -DWITH_SYSTEMD=1 && make -j4 && make install
    
    RUN chown -R mysql:mysql /usr/local/mysql/
    
    ADD my.cnf /etc/my.cnf
    
    RUN chown mysql:mysql /etc/my.cnf
    
    ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
    
    WORKDIR /usr/local/mysql/
    
    RUN bin/mysqld \
    
    --initialize-insecure \
    
    --user=mysql \
    
    --basedir=/usr/local/mysql \
    
    --datadir=/usr/local/mysql/data
    
    RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    
    EXPOSE 3306
    
    RUN systemctl enable mysqld
    
    VOLUME [ "/usr/local/mysql" ]
    
    CMD /usr/sbin/init
    
     
    
    vim my.cnf
    [client]
    port = 3306
    socket = /usr/local/mysql/mysql.sock
    
    [mysql]
    port = 3306
    socket = /usr/local/mysql/mysql.sock
    
    [mysqld]
    user = mysql
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data
    port = 3306
    character_set_server=utf8
    pid-file = /usr/local/mysql/mysqld.pid
    socket = /usr/local/mysql/mysql.sock
    server-id = 1
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    
    创建镜像
    
    docker build -t mysql:lnmp .
    
    
    
    基于镜像创建docker 并指定ip和端口
    
    docker run --name=mysql -d --privileged -v /usr/local/mysql --net mynetwork --ip 172.18.0.20 mysql:lnmp /usr/sbin/init
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104

    四、部署php(容器IP 为 172.18.0.30)

    mkdir /opt/php
    cd /opt/php
    
    • 1
    • 2

    上传 php-7.1.10.tar.bz2 到 /opt/php 目录中,也从其他主机把修改好的php-fpm.conf php.ini文件修改完成scp传入宿主机
    img

    php-fpm.conf

    img

    php.ini

    img

    img

    vim Dockerfile
    
    FROM centos:7
    
    MAINTAINER this is php image 
    
    RUN yum -y install gd \
    
    libjpeg libjpeg-devel \
    
    libpng libpng-devel \
    
    freetype freetype-devel \
    
    libxml2 libxml2-devel \
    
    zlib zlib-devel \
    
    curl curl-devel \
    
    openssl openssl-devel \
    
    gcc gcc-c++ make pcre-devel
    
    RUN useradd -M -s /sbin/nologin nginx
    
    ADD php-7.1.10.tar.bz2 /usr/local/src/
    
    WORKDIR /usr/local/src/php-7.1.10
    
    RUN ./configure \
    
    --prefix=/usr/local/php \
    
    --with-mysql-sock=/usr/local/mysql/mysql.sock \
    
    --with-mysqli \
    
    --with-zlib \
    
    --with-curl \
    
    --with-gd \
    
    --with-jpeg-dir \
    
    --with-png-dir \
    
    --with-freetype-dir \
    
    --with-openssl \
    
    --enable-fpm \
    
    --enable-mbstring \
    
    --enable-xml \
    
    --enable-session \
    
    --enable-ftp \
    
    --enable-pdo \
    
    --enable-tokenizer \
    
    --enable-zip && make && make install
    
    ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
    
    ADD php.ini /usr/local/php/lib/
    
    ADD php-fpm.conf /usr/local/php/etc/
    
    ADD www.conf /usr/local/php/etc/php-fpm.d/
    
    EXPOSE 9000
    
    ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]
    
     创建镜像
    
    docker build -t php:lnmp .
    
    基于镜像创建docker 并指定ip和端口
    docker run --name=php -d -p 9000:9000 --volumes-from mysql_server --volumes-from nginx --net mynetwork --ip 172.18.0.30 php:lnmp
    
    进入mysql容器
    
    docker exec -it mysql /bin/bash
    
    进入mysql,回车。
    
    mysql
    
    创建数据库
    create database wordpress;
    
    授予wordpress权限
    grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456'
    
    再给wordpress,root权限
    grant all privileges on *.* to 'root'@'%' identified by 'abc123';
    
    刷新
    flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106

    五、浏览器访问:

    http://192.168.153.20/wordpress/index.php
    ysql /bin/bash

    进入mysql,回车。

    mysql

    创建数据库
    create database wordpress;

    授予wordpress权限
    grant all privileges on wordpress.* to ‘wordpress’@‘%’ identified by ‘123456’

    再给wordpress,root权限
    grant all privileges on . to ‘root’@‘%’ identified by ‘abc123’;

    刷新
    flush privileges;

    
    
    
    ### 五、浏览器访问:
    
    http://192.168.153.20/wordpress/index.php
    ![img](https://img-blog.csdnimg.cn/img_convert/9752794ae9bac5d7327527a582ff4273.png)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    springboot中如何集成logback呢?
    魔兽mangos用户数据自动备份脚本
    VS Code插件 — Settings Sync : 设置和同步用户配置
    某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力
    精品Python协同过滤的新闻资讯推荐系统-可视化大屏
    【数据结构(邓俊辉)学习笔记】向量01——接口与实现
    【linux】shell 编程之流程控制语句详解
    GBase 8c V3.0.0数据类型——几何类型转换函数
    [Python] 二维数组初始化实践
    如何获取l2行情接口?
  • 原文地址:https://blog.csdn.net/Sisonglin1988/article/details/126900297