English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
查找 Docker Hub 上的 httpd 镜像:
可以通过 Sort by 查看其他版本的 httpd,默认是最新版本 httpd:latest。
بالإضافة إلى ذلك، يمكننا أيضًا استخدام الأمر docker search httpd لعرض الإصدارات المتاحة:
w3codebox@w3codebox:~/apache$ docker search httpd NAME DESCRIPTION STARS OFFICIAL AUTOMATED httpd The Apache HTTP Server .. 524 [OK] centos/httpd 7 [OK] rgielen/httpd-image-php5 Docker image for Apache... 1 [OK] microwebapps/httpd-frontend Httpd frontend allowing... 1 [OK] lolhens/httpd Apache httpd 2 Server 1 [OK] publici/httpd httpd:latest 0 [OK] publicisworldwide/httpd The Apache httpd webser... 0 [OK] rgielen/httpd-image-simple Docker image for simple... 0 [OK] solsson/httpd Derivatives of the offi... 0 [OK] rgielen/httpd-image-drush Apache HTTPD + Drupal S... 0 [OK] learninglayers/httpd (...) 0 [OK] sohrabkhan/httpd Docker httpd + php5.6 (...) 0 [OK] aintohvri/docker-httpd Apache HTTPD Docker ext... 0 [OK] alizarion/httpd httpd روی centos با mo... 0 [OK] ...
در اینجا ما تصویر رسمی را دانلود میکنیم
w3codebox@w3codebox:~/apache$ docker pull httpd
پس از اتمام دانلود، میتوانیم تصویر با REPOSITORY httpd را در لیست تصاویر محلی پیدا کنیم.
w3codebox@w3codebox:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd أحدث da1536b4ef14 23 ثانية مضت 195.1 MB
ایجاد فایل Dockerfile
ابتدا، پوشه apache را ایجاد کنید تا بتوانید چیزهای مرتبط را در آن ذخیره کنید.
w3codebox@w3codebox:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
پوشه www به پوشه برنامههای کانتینر apache تبدیل میشود.
پوشه logs به فایلهای لوگ کانتینر apache تبدیل میشود.
پوشه conf فایلهای پیکربندی را به فایلهای پیکربندی کانتینر apache تبدیل میکند.
دخول به پوشه ایجاد شده برای apache و ایجاد فایل Dockerfile.
FROM debian:jessie # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added #RUN groupadd -r www-data && useradd -r --create-home -g www-data www-data ENV HTTPD_PREFIX /usr/local/apache2 ENV PATH $PATH:$HTTPD_PREFIX/bin RUN mkdir -p "$HTTPD_PREFIX" \ && chown www-data:www-data "$HTTPD_PREFIX" WORKDIR $HTTPD_PREFIX # install httpd runtime dependencies # https://httpd.apache.org/docs/2.4/install.html#requirements RUN apt-get update \ && apt-get install -y --no-install-recommends \ libapr1 \ libaprutil1 \ libaprutil1-ldap \ libapr1-dev \ libaprutil1-dev \ libpcre++0 \ libssl1.0.0 \ && rm -r /var/lib/apt/lists/* ENV HTTPD_VERSION 2.4.20 ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2 RUN buildDeps=' \ ca-certificates \ curl \ bzip2 \ gcc \ libpcre++-dev \ libssl-dev \ make \ '' \ set -x \ && apt-get update \ && apt-get install -y --no-install-recommends $buildDeps \ && rm -r /var/lib/apt/lists/* \ \ && curl -fSL "$HTTPD_BZ2_URL" -o httpd.tar.bz2 \ && curl -fSL "$HTTPD_BZ2_URL.asc" -o httpd.tar.bz2.asc \ # see https://httpd.apache.org/download.cgi#verify && export GNUPGHOME="$(mktemp -d)" \ && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys A93D62ECC3C8EA12DB220EC934EA76E6791485A8 \ && gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \ && rm -r "$GNUPGHOME" httpd.tar.bz2.asc \ \ && mkdir -p src \ && tar -xvf httpd.tar.bz2 -C src --strip-components=1 \ && rm httpd.tar.bz2 \ && cd src \ \ && ./configure \ --prefix="$HTTPD_PREFIX" \ --enable-mods-shared=reallyall \ && make -j"$(nproc)" \ && make install \ \ && cd .. \ && rm -r src \ \ && sed -ri \ -e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' \ -e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' \ "$HTTPD_PREFIX/conf/httpd.conf" \ \ && apt-get purge -y --auto-remove $buildDeps COPY httpd-foreground /usr/local/bin/ EXPOSE 80 CMD ["httpd-foreground"]
ملف Dockerfile يحتوي على الأمر COPY httpd-foreground /usr/local/bin/ وهو ينسخ ملف httpd-foreground الموجود في الدليل الحالي إلى داخل الصورة، كنص بدء خدمة httpd، لذا يجب علينا إنشاء ملف سكريبت محلي يسمى httpd-foreground
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
赋予 httpd-foreground 文件可执行权限。
w3codebox@w3codebox:~/apache$ chmod +x httpd-foreground
通过 Dockerfile 创建一个镜像,替换成你自己的名字。
w3codebox@w3codebox:~/apache$ docker build -t httpd .
创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像。
w3codebox@w3codebox:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd أحدث da1536b4ef14 23 ثانية مضت 195.1 MB
docker run -p 80:80 -v $PWD/www/:/usr/local/apache2/htdocs/ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $PWD/logs/:/usr/local/apache2/logs/ -d httpd
شرح الأمر:
-p 80:80: تحويل منفذ 80 في الحاوية إلى منفذ 80 في المضيف.
-v $PWD/www/:/usr/local/apache2/htdocs/: تثبيت مجلد www الحالي في المضيف إلى /usr/local/apache2/htdocs/ في الحاوية.
-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf: توصيل ملف conf/httpd.conf الحالي في المضيف إلى /usr/local/apache2/conf/httpd.conf في القفص.
-v $PWD/logs/:/usr/local/apache2/logs/: توصيل مجلد logs الحالي في المضيف إلى /usr/local/apache2/logs/ في القفص.
مراجعة حالة بدء القفص:
w3codebox@w3codebox:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS ... NAMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
زيارة عبر المتصفح
It works! https://ar.oldtoolbag.com