前言

前几天为了出CTF题目,需要自行搭建环境,但是又怕物理机受损,所以自己写了docker文件,但踩了很多坑,特此记录一下。

话不多说。

dockerfile

首先是dockerfile文件。

FROM ubuntu:18.04

拉取Ubuntu镜像,这里我采用的是18.04版本

ENV REFRESHED_AT 2020-11-07

ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND noninteractive

设置相应的环境变量。

ENV DEBIAN_FRONTEND noninteractive这句记得加上,防止安装其他服务时,时区设置错误。

RUN rm /etc/apt/sources.list 
COPY sources.list /etc/apt/sources.list


RUN apt-get update

更新源,防止等会下载服务的时候太慢。

这里我建议自己写份nginx文件在本地,然后直接copy进去。方便日后自己维护。

我个人建议安装vim,不然如果你想进容器内部查看题目文件情况在线修改的话。还得安装一次(懒狗本狗了)

#安装nginx
RUN apt-get install nginx -y
#安装vim
RUN apt-get install vim
#安装php
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:ondrej/php -y
RUN apt update 
RUN apt-get install php7.4 -y
RUN apt-get install libapache2-mod-php -y  --fix-missing
RUN apt-get install php7.4-mysql -y
#自定义nginx
COPY your_nginx.conf /etc/nginx
COPY your_nginx_default.conf /etc/nginx/conf.d
RUN  /etc/init.d/nginx restart
#将题目源码放进去
COPY ./files/html /var/www/html
RUN rm /var/www/html/index.html
#启动脚本
COPY flag.sh /root/flag.sh
RUN  chmod +x /root/flag.sh
ENTRYPOINT cd /root; ./flag.sh
#暴露端口
EXPOSE 80

启动脚本

这个脚本是自定义的

这里我给出我自己的脚本文件

# 启动脚本
#启动nginx
service nginx restart

就是这么简单....

如果要有mysql

只需要修改一下dockerfile文件以及启动文件

dockerfile

#安装mysql
RUN apt-get install mysql-server -y
RUN apt-get install mysql-client -y
#修改mysql文件读写
RUN echo "secure_file_priv=''" >> /etc/mysql/mysql.conf.d/mysqld.cnf
RUN chown -R mysql:mysql /var/www/html
#将sql文件放进docker
COPY /files/html/db.sql /root/db.sql
RUN chmod +x /root/db.sql

启动脚本

#!/bin/bash
#启动mysql
service mysql restart

#文件加权限
chown mysql /var/run/mysqld/
chown -R mysql:mysql /var/lib/mysql

#修改密码
mysqladmin -u root password "root"
#导入数据库
if [[ -f /root/db.sql ]]; then
    mysql -e "source /root/db.sql" -uroot -proot
    rm -f /root/db.sql
fi
#启动apache
service apache2 restart

docker-compose

写一下docker-compose可以更方便的启动容器

version: "2"

services:

  web:
    build: .
    image: your_imagename
    container_name: your_containername
    restart: always
    ports:
      - "0.0.0.0:your_port:80"
    environment:
      - FLAG=yourflag

之后只需要进入题目目录输入docke-compose然后静静等待启动完成就好。


花びらは笑った