第三章 docker-GUI Stack部署

## 注意点:各image的版本号、各服务配置文件的位置

部署DNMP(docker + nginx + mysql(MariaDB)+ PHP-FPM)

环境部署

  • 配置存放目录
root@docker-debian:~# mkdir -p /opt/lnmp/data/nginx/conf.d/
root@docker-debian:~# mkdir -p /opt/lnmp/data/html
root@docker-debian:~# mkdir -p /opt/lnmp/data/mysql
root@docker-debian:~# cd /opt/lnmp/data/nginx/conf.d/
root@docker-debian:/opt/lnmp/data/nginx/conf.d# docker run -d --name test-nginx nginx
fa44cffbc00fef50845305a9562177390a6ed81086c3986f3ea134c533cd4d0f
root@docker-debian:/opt/lnmp/data/nginx/conf.d# docker cp test-nginx:/etc/nginx/conf.d/default.conf ./
  • 配置nginx(default.conf或wordpress.conf)
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        root           html;
        fastcgi_pass   lnmp-php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }

  • PHP-FPM安装支持MySQL插件(安装后需重启)
    image

DNMP的docker-compose.yml

services:   
  nginx:    
     image: nginx:latest
     container_name: lnmp-nginx
     ports:
      - "8081:80"
     volumes:
      - /opt/lnmp/data/nginx/conf.d:/etc/nginx/conf.d:rw
      - /opt/lnmp/data/html:/usr/share/nginx/html:rw
     environment:
      TZ: "Asia/Shanghai"
     restart: always
     networks:
      - lnmp
  php:
    image: php:fpm
    container_name: lnmp-php
    volumes:
      - /opt/lnmp/data/html:/var/www/html:rw
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - lnmp
  mysql:
    image: mysql:latest
    container_name: lnmp-mysql
    volumes:
      - /opt/lnmp/data/mysql/data:/var/lib/mysql:rw
    restart: always
    networks:
      - lnmp
    environment:
      MYSQL_ROOT_PASSWORD: "PObejCBeDzTRCncXwgBy"
      MYSQL_DATABASE: wordpress
      MYSQL_USER: "wordpress"
      MYSQL_PASSWORD: "MMS12ge**hao"
      TZ: "Asia/Shanghai"
  phpMyAdmin:
   image: phpmyadmin/phpmyadmin:latest
   container_name: lnmp-phpMyAdmin
   ports:
    - 8090:80
   environment:
    MYSQL_USER: "root"
    MYSQL_PASSWORD: "MMS12ge**hao"
    MYSQL_ROOT_PASSWORD: "MMS12ge**hao"
    PMA_HOST: "lnmp-mysql"
    PMA_PORT: "3306"
   networks:
    - lnmp
networks:   
  lnmp:

图形化部署stacks

image

  • 测试数据连接
    image

部署DAMP(docker + apache2 + mysql(MariaDB)+ PHP-FPM)

环境部署

root@docker-debian:~# docker run -d --name test-httpd httpd
8ed2e5ec88fa4a51c0c7cb1c2a0e8546fdc1941a63caa519aefc00e043a52d25
root@docker-debian:~# mkdir -p /opt/lamp/data/httpd
root@docker-debian:~# mkdir -p /opt/lamp/data/mysql
root@docker-debian:~# mkdir -p /opt/lamp/data/html
root@docker-debian:~# cd /opt/lamp/data/httpd
root@docker-debian:/opt/lamp/data/httpd# docker cp test-httpd:/usr/local/apache2/conf/httpd.conf ./
root@docker-debian:/opt/lamp/data/httpd# docker cp test-httpd:/usr/local/apache2/conf/extra/httpd-vhosts.conf ./
  • 配置apache(httpd.conf
# 启动转发模块,转发php的数据给PHP-FPM
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

# 添加index.php支持php欢迎页面
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

# 启用虚拟主机配置文件
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
  • 配置apache虚拟主机(httpd-vhosts.conf)
<VirtualHost *:80>
#    ServerAdmin plengong@com.cn
    DocumentRoot "/usr/local/apache2/htdocs"
    ServerName localhost
    <Directory "/usr/local/apache2/htdocs">
        Options None
        Require all granted
    </Directory>
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://lamp-php:9000/var/www/html/$1
</VirtualHost>
  • PHP-FPM安装支持MySQL插件(安装后需重启)
    image

DAMP的docker-compose.yml

services:   
  apache:    
     image: httpd:latest
     container_name: lamp-httpd
     ports:
      - "8082:80"
     volumes:
      - /opt/lamp/data/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf:rw
      - /opt/lamp/data/httpd/httpd-vhosts.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf:rw
      - /opt/lamp/data/html:/usr/local/apache2/htdocs:rw
     environment:
      TZ: "Asia/Shanghai"
     restart: always
     networks:
      - lamp
  php:
    image: php:fpm
    container_name: lamp-php
    volumes:
      - /opt/lamp/data/html:/var/www/html:rw
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - lamp
  mysql:
    image: mysql:latest
    container_name: lamp-mysql
    volumes:
      - /opt/lamp/data/mysql:/var/lib/mysql:rw
    restart: always
    networks:
      - lamp
    environment:
      MYSQL_ROOT_PASSWORD: "PObejCBeDzTRCncXwgBy"
      MYSQL_DATABASE: wordpress
      MYSQL_USER: "wordpress"
      MYSQL_PASSWORD: "MMS12ge**hao"
      TZ: "Asia/Shanghai"
networks:   
  lamp:

图形化部署stacks

image

  • 测试数据库连接
    image

  • 数据库测试文件


<?php
//这里的重点就是这个host是容器my-mysql,因为my-php和my-mysql在一个网络下,所以可以直接用容器的名字去访问这个容器


$con = new mysqli("数据库","用户","密码");
if (!$con)  { 
    die('Could not connect: ' . mysql_error()); 
}


echo "连接成功";
?>
posted @ 2022-12-04 13:23  plengong  阅读(54)  评论(0编辑  收藏  举报