前言
前几天为了出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然后静静等待启动完成就好。
Comments | 2 条评论
这里可以试着使用docker compose 哦~
@妖怪大贤者Davinci SAMA wow~大佬竟然给我评论了!!会尝试的啦~~