首页 > 数据库 >mysql+php+apache的docker坏境搭建

mysql+php+apache的docker坏境搭建

时间:2023-11-26 12:22:21浏览次数:55  
标签:&& -- sudo 坏境 install mysql apache docker php

1:安装docker

sudo apt install docker.io

2:安装mysql

sudo docker run --privileged=true -di --restart=always --name MySqlForPhp01 -p 55506:3306 -e MYSQL_ROOT_PASSWORD=1234qwer -e --character-set-server=utf8mb4 -e --collation-server=utf8mb4_unicode_ci mysql:8.0.30

3:安装php

PHP的几种运行模式cli、fpm、apache、zts比较:https://tongfu.net/home/35/blog/513287.html#4.

Docker的几种精简版本Buster、Alpine、Stretch比较:https://www.tongfu.net/home/35/blog/513289.html

pdo连接mysql数据库(简洁明了) :https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79250344

sudo docker pull php:7.4.33-apache-buster
#运行一个测试容器复制配置文件
sudo docker run -itd --privileged=true --name MyPhpTest -v /opt/Docker/project:/var/www/html php:7.4.33-apache-buster
sudo mkdir -p /opt/Docker/project/docker/etc && sudo docker cp MyPhpTest:/etc/apache2 /opt/Docker/project/docker/etc/apache2 && sudo chmod -R 777 /opt/Docker/project/docker/etc/
#修改ports.conf
Listen 80
Listen 8855
Listen 8866
#修改sites-available/000-default.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html/public"
    ServerName crp.com
    AddHandler fcgid-script .php
  <Directory "/var/www/html/public">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
	  DirectoryIndex crp.php index.php index.html error/index.html
  </Directory>
</VirtualHost>
sudo docker run -itd --privileged=true --restart=always --name MyPhpForTest01 -p 56680:80 -p 8855:8855 -p 8866:8866  -v /opt/Docker/project:/var/www/html -v /opt/Docker/project/docker/etc/apache2:/etc/apache2 --link MySqlForPhp01 php:7.4.33-apache-buster
#进入php容器中
	sudo docker exec -it MyPhpForTest01 /bin/bash
#安装扩展pdo_mysql、mysqli和pdo
	docker-php-ext-install pdo_mysql && docker-php-ext-install mysqli && docker-php-ext-install pdo
#安装扩展gd和zip
apt update && apt install zlib1g-dev libpng-dev libzip-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-install gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install zip
#重启php容器中
	sudo docker restart MyPhpForTest01
	sudo docker commit MyPhpForTest01 php:20230907x86_64
	sudo docker save -o php20230907x86_64.docker php:20230907x86_64
http://127.0.0.1:56680/index.php

bdm项目

sudo docker pull php:7.1.33-apache-buster
sudo docker run --privileged=true -di --restart=always --name MySqlForBdm01 -p 59906:3306 -e MYSQL_ROOT_PASSWORD=1234qwer -e --character-set-server=utf8mb4 -e --collation-server=utf8mb4_unicode_ci mysql:8.0.30
sudo docker run -itd --privileged=true --restart=always --name MyPhpForBdm01 -p 56680:80 -v /opt/Docker/project:/var/www/html -v /opt/Docker/project/docker/etc/apache2:/etc/apache2 --link MySqlForBdm01 php:7.1.33-apache-buster
#进入php容器中
	sudo docker exec -it MyPhpForBdm01 /bin/bash
#安装扩展pdo_mysql、mysqli和pdo
	docker-php-ext-install pdo_mysql && docker-php-ext-install mysqli && docker-php-ext-install pdo
#安装扩展gd和zip
apt update && apt install zlib1g-dev libpng-dev libzip-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install zip
#重启php容器中
	sudo docker restart MyPhpForBdm01
	sudo docker commit MyPhpForBdm01 bdm:20230911x86_64
	sudo docker save -o bdm20230911x86_64.docker bdm:20230911x86_64

测试

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>显示系统时间</title>
    <style>
        /* 将系统时间渲染到div盒子中 */
        div {
            margin: 100px auto;
            width: 300px;
            height: 40px;
            border: 1px solid skyblue;
            text-align: center;
            line-height: 40px;
        }
    </style>
</head>
<body>
    <!-- 创建一个div -->
    <div></div>
    <script>
        // 获取div
        const div = document.querySelector('div')
        // 获取系统时间的函数
        function getNowDate() {
            // 获取日期对象 
            const date = new Date()
            // 获取系统当前的小时,分钟,秒,分别赋值给:h , m , s 三个变量
            let h = date.getHours()
            let m = date.getMinutes()
            let s = date.getSeconds()
            // 实现输出格式为: xx:xx:xx  (时:分:秒)
            h = h < 10 ? '0'+h :h
            m = m < 10 ? '0'+m :m
            s = s < 10 ? '0'+s :s
            return `今天是:${date.getFullYear()}年${date.getMonth()+1}月${date.getDate()}日 ${h}:${m}:${s}`    //getMonth() 获取月份取值从0开始,故实际月份要加1
        }
        // 先调用一次,刷新页面直接就会显示系统时间,否则会有延迟一秒钟的等待。
        div.innerHTML = getNowDate()
        // 设置时间间隔,1000毫秒执行一次,也就是一秒执行一次。
        setInterval(function(){
        // 调用函数,将函数返回值写入到div标签中
            div.innerHTML = getNowDate()
        },1000)
    </script>
</body>
</html>
http://127.0.0.1:56680/test.html

phpinfo.php

<?php
phpinfo();
?>
http://127.0.0.1:56680/phpinfo.php

mysqli_test.php

<?php 

$DB_USER = "root";
$DB_PASS = "1234qwer";
$link = new mysqli('172.17.0.1:55506', $DB_USER, $DB_PASS, 'mysql');

if($link->connect_error) {
    die("连接失败: ".$link->connect_error);
}

$sql="select * from user;";
$res=$link->query($sql);
$data=$res->fetch_all();
var_dump($data);
?>
http://127.0.0.1:56680/mysqli_test.php

PDO_test.php

<?php
$servername = "MySqlForPhp01";
$username = "root";
$password = "1234qwer";
try
{
    $pdo = new PDO("mysql:host=$servername;dbname=mysql", $username, $password);
    echo "success!\n";
    //查询操作
    $stmt = $pdo->query("select * from user;");
    $data = $stmt->fetch(2);
    var_dump($data);
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>
http://127.0.0.1:56680/PDO_test.php

标签:&&,--,sudo,坏境,install,mysql,apache,docker,php
From: https://www.cnblogs.com/yuanhaoblog/p/17856723.html

相关文章

  • apache的数字工具类NumberUtils
    org.apache.commons.lang3.NumberUtils<!--StringUtils、NumberUtils等工具类--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></de......
  • apache的字符串工具类StringUtils
    org.apache.commons.lang3.StringUtils。<!--StringUtils、NumberUtils等工具类--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></d......
  • MySQL_事务
    事务的特性ACIDA原子性:一个事务中的所有操作,要么全部完成,要么全部不完成。undolog保证C一致性:事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。原子性、隔离性、持久性保证I隔离性:多个并发事务交叉执行,使用相同的数据时,互不干扰,每个事务都有一个完整的数据空间......
  • Windows环境下修改my.ini导致MySQL启动失败
    问题:修改my.ini导致MySQL启动失败在Windows环境中,使用默认编辑器编辑my.ini配置文件可能导致MySQL启动失败,是因为默认编辑器使用的是UTF-8编码。解决方法:更改编码为ANSI使用文本编辑器打开my.ini,选择“另存为”并将编码更改为ANSI。重新启动MySQL服务,确保配置文件与MySQL默认......
  • apache包下的BeanUtils
    <!--BeanUtils的依赖--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency>设置和读取属性//设置属性Map<String,Objec......
  • mysql多个字段最大最小值
    转自:https://www.jb51.net/article/263686.htm1、语法最大值:GREATEST(expr_1,expr_2,...expr_n)最小值:LEAST(expr_1,expr_2,...expr_n)2、说明GREATEST(expr_1,expr_2,...expr_n)函数从表达式(列、常量、计算值)expr_1,expr_2,...expr_n等中找出最大的数返回......
  • 关于点赞业务对MySQL和Redis和MongoDB的思考
    点赞​ 在我个人理解中,点赞业务比较频繁,很多人业务可能都会有这个,比如:博客,视频,文章,动态,评论等,但是不应该是核心业务,不应该大量地请求MySQL数据库,给数据库造成大量的资源消耗,MySQL的数据库是非常宝贵的.以某音为例,当我去搜索的时候,全抖音比较高的点赞数目应该是在1......
  • apache包下的CollectionUtils
    org.apache.commons.collections包下的CollectionUtils工具类。<!--CollectionUtils--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version>......
  • mysql定时备份
    mysql定时备份概述:​1、一般来说,生产服务器每天都需要定期进行数据备份、异地备份,这样确保意外情况(数据意外删除、硬件故障、火灾等等)下避免数据大批量丢失,能快速恢复数据,把意外带来的影响降到到最小。数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过......
  • ubuntu下mysql57重置密码
    重置密码:重置MySQLroot用户的密码。在安全模式下启动MySQL(root下),然后更改密码。sudoservicemysqlstopsudomysqld_safe--skip-grant-tables&mysql-uroot在MySQL中执行以下SQL语句:USEmysql;UPDATEuserSETauthentication_string=PASSWORD('your_new_pa......