• 5-- Dockerfile 搭建 博客系统


    安装流程规划

    • wordpress装在宿主主机,相当于一台NFS
    • php用yum安装在一台容器内
    • nginx装在一个容器内
    • 将容器挂载到wordpress站点目录以实现访问
    • 宿主机内cpu要求四核四G

    1.建站点,上传软件包

    1、创建目录
    [root@docter ~]# mkdir /blog/{php,nginx,mysql}
    2、上传wordpress包并解压
    [root@docker opt]# wget https://wordpress.org/latest.zip
    [root@docker opt]# unzip -d /blog/ latest.zip 
    3、构建centos:7镜像
    [root@docter ~]# docker run -it  centos:7 bash
    [root@docter ~]# docker images
    REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
    centos            7         3c9be54d505f  7 months ago     204MB
    4、创建一个网桥
    [root@docter ~]# docker network create lnmp
    [root@docter ~]# docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    e26ae49a68f1   bridge    bridge    local
    b0a268c1d902   host      host      local
    bb02f8b94a1a   lnmp      bridge    local
    0d214ca04d47   none      null      local
    

    2.准备php文件+构建为镜像

    #切换目录
    [root@docker ~]# cd /blog/php
    
    #编辑php配置文件
    [root@docker php]# vim www.conf
    [www]
    user = www
    group = www
    listen = 9000
    request_terminate_timeout = 0
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    slowlog = /var/log/php-fpm/www-slow.log
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    php_value[session.save_handler] = files
    php_value[session.save_path]    = /var/lib/php/session
    php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
    
    #创建PHP.repo
    [root@docker php]# vim php.repo
    [php-webtatic]
    name = PHP Repo
    baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
    gpgcheck = 0
    enable = 1
    
    #编辑php Dockerfile
    [root@docker php]# vim Dockerfile
    FROM centos:7
    ADD www.conf /etc/php-fpm.d/www.conf
    ADD php.repo /etc/yum.repos.d/php.repo
    RUN useradd www
    RUN yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb php71w-bcmath --skip-broken
    EXPOSE 9000
    CMD ["php-fpm "-F""]
    
    #构建php镜像
    [root@docker php]# docker build -t php:v1 .
    
    # 启动容器(容器名为php,指定网桥,指定挂载目录,开辟一个窗口)
    [root@docker php]# docker run -it --name php --network=lnmp -v /blog/wordpress/:/usr/share/nginx/html php:v1 bash
    

    3.准备nginx文件+构建为镜像

    1、编写nginx的dockerfile文件
    [root@docter nginx]# cat Dockerfile 
    FROM centos:7
    
    ADD nginx.repo /etc/yum.repos.d/
    RUN yum -y install nginx
    
    ADD default.conf /etc/nginx/conf.d/
    ADD nginx.conf /etc/nginx/
    
    WORKDIR /usr/share/nginx/
    
    EXPOSE 80 443
    
    RUN groupadd www -g 666 && 
        useradd www -u 666 -g 666
    
    CMD nginx -g "daemon off;"
    
    2、编写nginx的default.conf 文件
    [root@docter nginx]# cat default.conf 
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
        root   /usr/share/nginx/html;
        
        location / {
            index  index.php index.html index.htm;
        }
    
        location ~ .php$ {
            root           /usr/share/nginx/html;
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    
    3、编辑nginx配置文件
    [root@docker1 nginx]# vim nginx.conf 
    user  www;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/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  /var/log/nginx/access.log  main;
    
    sendfile        on;
    #tcp_nopush     on;
    
    keepalive_timeout  65;
    
    #gzip  on;
    
    include /etc/nginx/conf.d/*.conf;
    
    4、编写nginx的nginx.repo文件
    [root@docter nginx]# cat nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    5、构建镜像
    [root@docter nginx]# docker build -t nginx:v1 . #构建必须和dockerfile在同一个目录中
    
    6、启动容器(容器名为nginx,绑定端口映射,指定网桥,指定挂载目录,开辟一个窗口)
    [root@docker opt]# docker run -it --name nginx -p 80:80 --network=lnmp -v /blog/wordpress/:/usr/share/nginx/html nginx:latest bash
    

    4.构建MYSQL镜像

    # 启动容器(容器名为mysql,指定网桥,创建密码))
    [root@docker blog]# docker run -d -e MYSQL_ROOT_PASSWORD=123 --network=lnmp --name mysql mysql:5.7
    
    #进入mysql容器
    [root@docker1 ~]# docker exec -it mysql bash
    
    #进入数据库
    root@9669bf1d0d99:/# mysql -uroot -p
    Enter password: 123
    
    #创建数据库
    mysql> create database wordpress;
    Query OK, 1 row affected (0.00 sec)
    

    5.测试

     #查看全部镜像
    [root@m01 blog]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
    php          v1        a1665bd3e348   About an hour ago   534MB
    nginx        latest    77c83387bf62   About an hour ago   335MB
    mysql        5.7       09361feeb475   5 days ago          447MB
    centos       7         8652b9f0cb4c   7 months ago        204MB
    
    #查看全部容器是否启动成功
    [root@m01 blog]# docker ps -a
    CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                                        NAMES
    deab5f483b44   mysql:5.7      "docker-entrypoint.s…"   About an hour ago   Up About an hour   3306/tcp, 33060/tcp                          mysql
    94d5a2684033   php:v1         "bash"                   About an hour ago   Up 50 minutes      9000/tcp                                     php
    60fb25477abb   nginx:latest   "bash"                   About an hour ago   Up 55 minutes      0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   nginx
    
    #进入nginx容器执行nginx前台运行的命令
    [root@60fb25477abb conf.d]# nginx -g "daemon off;"
    
    #进入php容器执行php前台运行的命令
    [root@94d5a2684033 /]# php-fpm -F
    
    #IP访问测试
    1、把 wp-config.php文件写到此目录中就ok
    [root@docter wordpress]# pwd
    /blog/wordpress
    [root@docter wordpress]# vim wp-config.php  
    <?php
    ... ... ...
    # 安装
    
  • 相关阅读:
    JDK7与JDK8环境共存与切换:先安装jdk7,配置好环境变量后再安装jdk8
    Maven环境配置
    JDK的安装
    Access2010打开系统表MSysObjects的控制权限
    Spring aop 简单示例
    redis集群搭建
    springmvc中拦截器与springmvc全局异常处理器的问题
    自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况
    一句SQL实现MYSQL的递归查询
    2002年的决战坦克,重新玩一遍。qq群号:1035127306
  • 原文地址:https://www.cnblogs.com/caodan01/p/15078325.html
Copyright © 2020-2023  润新知