From d56f19120d3f47f6b4aee1f2be1e99e069716749 Mon Sep 17 00:00:00 2001 From: c0ny1 <1627639645@qq.com> Date: Tue, 29 Jan 2019 00:22:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AEDockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++- docker/Dockerfile | 32 ++++++++ docker/docker-php.conf | 13 +++ docker/php.ini | 174 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile create mode 100644 docker/docker-php.conf create mode 100644 docker/php.ini diff --git a/README.md b/README.md index bc995fa..907102f 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ 若要自己亲自搭建环境,请按照以下配置环境,方可正常运行每个Pass。 |配置项|配置|描述| -|:---:|:---:|:---:| +|:---|:---|:---| |操作系统|Window or Linux|推荐使用Windows,除了Pass-19必须在linux下,其余Pass都可以在Windows上运行| |PHP版本|推荐5.2.17|其他版本可能会导致部分Pass无法突破| |PHP组件|php_gd2,php_exif|部分Pass依赖这两个组件| @@ -51,6 +51,13 @@ 创建镜像 +``` +$ cd upload-labs/docker +$ docker build -t upload-labs . +``` + +或 + ``` $ docker pull c0ny1/upload-labs ``` diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..9ad57b8 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,32 @@ +FROM php:5.5-apache + +MAINTAINER c0ny1 +ENV LC_ALL C.UTF-8 +ENV TZ=Asia/Shanghai + +COPY . /tmp/ + +# config apache && php +RUN cp /tmp/docker-php.conf /etc/apache2/conf-available/docker-php.conf &&\ + cp /tmp/php.ini /usr/local/etc/php/ &&\ + cp /tmp/php.ini /usr/local/etc/php/conf.d/ + +# install git && php ext +RUN apt-get update && \ + apt-get install -y libgd-dev &&\ + apt-get install -y git &&\ + docker-php-ext-install gd &&\ + docker-php-ext-enable gd &&\ + docker-php-ext-install exif &&\ + docker-php-ext-enable exif &&\ + rm -rf /var/lib/apt/lists/* + +# install upload-labs +RUN cd /tmp/ &&\ + git clone https://github.com/c0ny1/upload-labs.git &&\ + rm -rf /var/wwww/html/* &&\ + mv /tmp/upload-labs/* /var/www/html/ &&\ + chown www-data:www-data -R /var/www/html/ && \ + rm -rf /tmp/* + +EXPOSE 80 diff --git a/docker/docker-php.conf b/docker/docker-php.conf new file mode 100644 index 0000000..bc1ce5a --- /dev/null +++ b/docker/docker-php.conf @@ -0,0 +1,13 @@ +# +# SetHandler application/x-httpd-php +# + +AddHandler application/x-httpd-php .php + +DirectoryIndex disabled +DirectoryIndex index.php index.html + + + Options -Indexes + AllowOverride All + diff --git a/docker/php.ini b/docker/php.ini new file mode 100644 index 0000000..673f533 --- /dev/null +++ b/docker/php.ini @@ -0,0 +1,174 @@ +[PHP] +engine = On +short_open_tag = Off +asp_tags = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = 17 +disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, +disable_classes = +zend.enable_gc = On +magic_quotes_gpc = Off +expose_php = Off +max_execution_time = 30 +max_input_time = 60 +memory_limit = 128M +error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT +display_errors = Off +display_startup_errors = Off +log_errors = On +log_errors_max_len = 1024 +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +track_errors = Off +html_errors = On +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 8M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" +doc_root = +user_dir = +enable_dl = Off +file_uploads = On +upload_max_filesize = 8M +max_file_uploads = 20 +allow_url_fopen = On +allow_url_include = On +default_socket_timeout = 60 +[CLI Server] +cli_server.color = On +[Date] +[filter] +[iconv] +[intl] +[sqlite3] +[Pcre] +[Pdo] +[Pdo_mysql] +pdo_mysql.cache_size = 2000 +pdo_mysql.default_socket= +[Phar] +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = On +[SQL] +sql.safe_mode = Off +[ODBC] +odbc.allow_persistent = On +odbc.check_persistent = On +odbc.max_persistent = -1 +odbc.max_links = -1 +odbc.defaultlrl = 4096 +odbc.defaultbinmode = 1 +[Interbase] +ibase.allow_persistent = 1 +ibase.max_persistent = -1 +ibase.max_links = -1 +ibase.timestampformat = "%Y-%m-%d %H:%M:%S" +ibase.dateformat = "%Y-%m-%d" +ibase.timeformat = "%H:%M:%S" +[MySQL] +mysql.allow_local_infile = On +mysql.allow_persistent = On +mysql.cache_size = 2000 +mysql.max_persistent = -1 +mysql.max_links = -1 +mysql.default_port = +mysql.default_socket = +mysql.default_host = +mysql.default_user = +mysql.default_password = +mysql.connect_timeout = 60 +mysql.trace_mode = Off +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.cache_size = 2000 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = +mysqli.reconnect = Off +[mysqlnd] +mysqlnd.collect_statistics = On +mysqlnd.collect_memory_statistics = Off +[OCI8] +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 +[Sybase-CT] +sybct.allow_persistent = On +sybct.max_persistent = -1 +sybct.max_links = -1 +sybct.min_server_severity = 10 +sybct.min_client_severity = 10 +[bcmath] +bcmath.scale = 0 +[browscap] +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.serialize_handler = php +session.gc_probability = 0 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.hash_function = 0 +session.hash_bits_per_character = 5 +url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" +[MSSQL] +mssql.allow_persistent = On +mssql.max_persistent = -1 +mssql.max_links = -1 +mssql.min_error_severity = 10 +mssql.min_message_severity = 10 +mssql.compatibility_mode = Off +mssql.secure_connection = Off +[Assertion] +[COM] +[mbstring] +[gd] +[exif] + +[Tidy] +tidy.clean_output = Off +[soap] +soap.wsdl_cache_enabled=1 +soap.wsdl_cache_dir="/tmp" +soap.wsdl_cache_ttl=86400 +soap.wsdl_cache_limit = 5 +[sysvshm] +[ldap] +ldap.max_links = -1 +[mcrypt] +[dba] +[opcache] +[curl] +[openssl]