Docker 搭建 apache-php-mysql web环境_yจุ๊บng的博客-程序员宝宝

技术标签: docker-compose  docker  


前言

最近帮学校的新生出一个sql注入的题目(19级甚至20级都开始入门了,我一个18级的还是个菜鸡,要我帮他们出题,真难为我了),然后 pull 了两个 docker 镜像,php:5.6.11-apache 和 mysql:5.7,问题来了

1. 一开始,我用 127.0.0.1:3306 去访问,结果出错了,还半天不知道原因在哪

2. php mysqli 扩展未安装

3. docker run -v 的路径问题


一、容器互访

1. docker run --link

使用 docker run 命令的时候添加参数 --link 已存在的容器名:自定容器别名,如图:

在这里插入图片描述
这样运行的容器会在 /etc/hosts 文件中加入一条记录,包含 ip 地址,容器别名,id,容器名(在容器名与容器别名相同的时候为只有前三项),至于 ip 可以使用 docker inspect mysql|grep IPAddress 查看,如下:
在这里插入图片描述
所以第二种方法也出来了

2. 修改 /etc/hosts

直接使用命令 echo "ip 容器名 id " >> /etc/hosts,将记录添加进 /etc/hosts 也可

3. docker-compose.yml

在 yml 文件中添加 linksdepends_on 标签,如下图:
在这里插入图片描述


二、php 扩展安装

在 docker 容器的 /usr/local/bin 文件夹下有个程序 docker-php-ext-install 可以用于php扩展的安装
在这里插入图片描述
可以直接进入容器内安装或在 Dockerfile 中写入如下内容:
Dockerfile
直接在 docker-compose.yml 中用 command 执行该命令,命令执行完后容器会自动退出,使用多行命令又会出错,没有找到解决的办法,望师傅们指点指点

三、docker run -v 路径问题

一开始,我是这样写的 -v www:/var/www/html,结果不知道在哪个地方创建了一个 www 文件,但是使用相对路径 -v ./www:/var/www/html 会报错,最后使用绝对路径解决

之所以想记录一下这个问题,是因为在百度的时候发现有个师傅的操作很骚,他是这么写的

-v `pwd`/www:/var/www/html


四、完整文件

我把它放到了 github 中了,可以直接 clone 下来搭建一个 sql 注入的环境,https://github.com/y0un9er/php-mysql

docker-compose.yml

version: '2'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456

  web:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: web
    ports:
      - "10080:80"
    links:
      - mysql
    volumes:
      - ./www:/var/www/html      
                          

Dockerfile,其实就一句 RUN 而已,真的超想写到 docker-compose.yml 中去

FROM php:5.6.11-apache

RUN /usr/local/bin/docker-php-ext-install mysql mysqli

总结

出个题真不容易啊,不过遇到问题到解决问题真的能给人一种很充实的感觉

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdniamcoming/article/details/114674504

智能推荐

哈希传递攻击(Pass-the-Hash,PtH)_谢公子的博客-程序员宝宝

目录哈希传递攻击MSF进行哈希传递攻击PtH(工作组)MSF进行哈希传递攻击PtH(域)mimikatz进行哈希传递攻击PtH(工作组)mimikatz进行哈希传递攻击PtH(域)使用AES进行哈希传递攻击(PTK,Pass The Key)更新KB2871997补丁产生的影响哈希传递攻击哈希传递攻击是基于NTLM认证的一种攻击方式。哈希传递攻击的利用前提是我们...

centos7_5_用户管理_一默1991的博客-程序员宝宝

第一节:用户管理配置文件/etc/passwd 用户信息文件# man 5 passwdwc -l /etc/passwdaccount:password:UID:GID:GECOS:directory:shellGID:缺省组idGECOS:注释性描述,例如存放用户全名等信息directory:宿主目录命令解释器:用户使用的shell,默认bashpas...

解决:使用pip命令安装tidevice,ERROR: Could not find a version that satisfies the requirement;_pip install tidevice失败了_一只菜鸟的学习日常博的博客-程序员宝宝

解决:ERROR: Could not find a version that satisfies the requirementERROR: No matching distribution found for tidevice使用pip命令如下:pip3 install -U tidevice安装失败界面如下原因:将fiddler everwhere 这个抓包工具打开了,其图标如下关掉就好了,之前还试了更新pip都没有用,原来只是开了抓包工具,一定要仔细。...

idea中执行“npm”命令,提示'node' 不是内部或外部命令,也不是可运行的程序_supertangcugu的博客-程序员宝宝

idea中执行“npm”命令,提示'node' 不是内部或外部命令,也不是可运行的程序问题解决方法问题当我们一口气在电脑上装完nodejs、npm环境时(尤其在新的工作环境,或者换电脑,重新配置环境时),发现立刻打开idea,然后执行npm等命令时,经常提示'npm' 不是内部或外部命令,也不是可运行的程序解决方法step1:检查环境变量是否都在系统中配置step2:如果环境变量ok,问...

CSDN中Markdown格式(编辑器)语法及其使用_csdn如何使用代码格式_祝枫的博客-程序员宝宝

Markdown格式的文档在很多地方都要用到,程序员宝宝中尤甚。该笔记中以CSDN官方Markdown编辑器教程为基础,整理出常用的Markdown语法。1.标题的设置前面加#可生成标题的样式,每多一个#标题即降一个等级。(注意#要和标题之间留出一个空格)# 一级标题## 二级标题### 三级标题2.列表的设置- 后加内容即可构成列表,且下一级列表要相对上...

随便推点

给视频加上自己的水印,再也不用担心被盗图了_lvlusweet的博客-程序员宝宝

随着我国市场经济的发展,对知识产权的保护越来越严格。一篇文章、一首歌曲、一段视频,都是我们的创作,都收到法律的产权保护。近些年短视频方兴未艾,长视频也越来越火,为了避免我们的创造被窃取,怎么保护我们的视频创作呢?最重要的一点就是——给视频打上水印。步骤一:在浏览器上搜索“水印云”或者网址"https://www.shuiyinyun.com/",点击“立即体验”即可。步骤二:注册一个账号并登录,点击“视频加水印”;步骤三:点击“添加文件”,并本地上传视频;或者在输入框输入视频链接地址步骤四:

scrapy_redis源码分析(一):RedisSpider类(自定义初始请求)_potato_big的博客-程序员宝宝

scrapy_redis框架的RedisSpider类和RedisMixin类源码分析,自定义初始请求

计算机硬件基础&ARM处理器概论(ARM体系结构与接口技术)_arm处理体系结构及应用 实验_刘岳霖的博客-程序员宝宝

计算机硬件基础 D1底层课程导学1.编程基础2.应用开发 (函数)3.底层开发C语言基础IOARMC高级与linux进程系统移植数据结构网络编程驱动开发嵌入式系统分层操作系统的作用向下管理硬件、向上提供接口(API) 应用开发即使用系统提供的接口(API),做上层应用程序的开发底层开发即做操作系统本身的开发Linux层次结构Linux子系统进程管理(Process management):管理进程的创建、调度、销毁等内存

c++ tools_c++ simtool_for_sony315的博客-程序员宝宝

开发环境   ---->Turbo c   DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:)   ---->Visual C++ 6.0/7.0  稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy+

技校计算机可以学平面设计吗,上技校可以学平面设计吗 去技校学平面设计还是自己在家自学好 - 兔课网..._weixin_39669265的博客-程序员宝宝

在技校平面设计,需要什么具体的配置?许多小朋友经常想知道他们是在大学平面设计还是在技校学的,所以今天我们将为大家解决这个问题!在技校学平面设计,具体需要什么配置?1,平面设计,对计算机配置的要求不是很高,比较便宜的是i3,比较贵的是i5,至于高端处理的四核和八线程,比如i7和E3,就有一点性能过剩(当然,只要预算足够就可以考虑)2,内存一般是标准4G,有特殊要求,可以加到8G。3.平面设计显卡要求...

linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32_cherisegege的博客-程序员宝宝

原文链接:https://blog.csdn.net/yyywill/article/details/54426900x86-64 与 IA-64x86-64一般称为AMD x86-64,难道x86-64不是Intel首先搞出来的指令集么?这回的确是AMD干的,但是用的是Intel 16bits升到32bits向下兼容的套路。大致是这样的:x86:从1978年来的8086处理器开始,就...

推荐文章

热门文章

相关标签