• Docker 搭建 apache2 + php8 + MySQL8 环境


    最近负责校内比赛的出题,所以接触了 docker 的使用,在这里记录下

    • Docker 安装
    执行 Docker 安装命令
    curl -fsSL https://get.docker.com/ | sh
    启动 Docker 服务
    sudo service docker start
    查看 Docker 是否正常工作
    sudo service docker status
    0
    更改用户权限
    sudo groupadd docker # 新建用户组 
    sudo gpasswd -a $USER docker #将登录用户加入docker组 
    newgrp docker #更新用户组
    查看当前镜像
    docker images
    搜索可用镜像
    docker search 名称
    下载镜像
    docker pull 名称
    启动当前镜像
    docker run -it -d -p 8000:80 镜像编号/名称 /bin/sh 
    -it  #表示用终端操控 
    -d #表示后台运行 
    -p #表示把容器的 80 端口映射到 物理机的 8000 端口
    查看当前运行容器
    docker ps
    停止当前运行容器
    docker stop 容器编号
    进入容器内部
    docker exec -it 容器编号 bash

     

    • apache2搭建

    搜索有关于 apache2 的容器

    docker search apache2
    0
    这里选用第一个的 ubuntu + apache2 环境
    下载镜像
    docker pull ubuntu/apache2
    0
    查看镜像
    docker images
    0
    启动 ubuntu/apache2 容器
    docker run -it -d -p 8000:80 ubuntu/apache2:latest /bin/sh
    并查看当前活跃容器
    0
    进入容器内部
    docker exec -it 2af38a bash
    0
    开启 apache2 服务
    service apache2 start
    可以看到成功启动 apache2 服务
    0
    在物理机上访问
    localhost:8000
    可以看到 apache2 成功运行
    0
    在首页下新建php文件
    vim /var/www/html/1.php 
    # /var/www/html 是网站文件存放路径
    如果 vim 提示未安装,则需要先安装
    apt update #更新 
    apt install vim #安装 vim
    1.php 内容如下
    phpinfo(); ?>
    访问
    localhost:8000/1.php
    会发现不解析 php
     
     
    • php 搭建
    在容器内部直接安装php
    apt install php 
    apt install php-mysql
    重启 apache2 服务
    service apache2 restart
    成功解析 php 代码
    0
     
    • MySQL 搭建
    ctrl +d 回到物理机终端
    同 apache2 安装 MySQL(这里以MySQL8为例)
    运行 MySQL 容器
    docker run -it -d -p 3000:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql(编号) /bin/sh 
    # -e 默认mysql账号 root 密码 123456
    0
    进入 MySQL 容器,并开启 MySQL 服务
    docker exec -it 4fc917 bash service mysql start
    接下来 配置 MySQL
    进入MySQL
    mysql -u root -p 
    # 或者 
    mysql
    可以直接进入 mysql
    更改账号密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    或者可以参试以下方法更改账号密码
    复制代码
    cat /etc/mysql/debian.cnf 用debian.cnf里面的用户名和密码来登录 
    use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 
    FLUSH PRIVILEGES; 
    sudo service mysql restart
    创建远程用户并赋予权限
    CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
    复制代码
    物理机访问 MySQL,不出意外是能成功访问 Docker 容器内的 MySQL
    mysql -uadmin -p123456 -h本机ip -P3000
    同理,php访问mysql也是 ip+端口号 这种方式
    注:MySQL搭建这部分的更改账号密码可能会出现意外,可以去网上寻找其它方法
     
     
    这里我为什么不在 ubutn/apache2 容器内部署mysql或者直接用lamp呢,这是因为我尝试了几次,发现,如果 apache2 和 mysql 在同一个容器内,那么 apache2 或者 mysql 总是启动不成功,所以就用了 MySQL独占一个容器的方法。
     
     
    附:部署文件上传题目的时候,要更改文件上传的目录所属,否则文件上传不上去
    chown -R www-data:www-data /var/www/upload

     

  • 相关阅读:
    使用Docker快速搭建基础服务
    如何保护您的工业网络?
    SecureCRT ssh链接服务器
    中国石油大学(北京)-《 完井工程》第二阶段在线作业
    关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)Html+Css+javascript
    高中数学:三角恒等变换-两角和与差的变形公式
    linux文件系统、文件系统结构、虚拟文件系统
    【Hello Algorithm】滑动窗口内最大值最小值
    预付费售电管理系统基础知识
    Visual Studio部署C++环境下OpenCV库
  • 原文地址:https://www.cnblogs.com/xshhc/p/16614123.html