{"id":281964,"date":"2016-12-04T17:50:03","date_gmt":"2016-12-04T14:50:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=281964"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=281964","title":{"rendered":"\u0417\u0430\u043f\u0443\u0441\u043a PHP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 (PHP-FPM, Nginx, PostgreSQL)"},"content":{"rendered":"<p>\u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u043e\u0440\u043e\u0442\u044b. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b.<\/p>\n<p>  \u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0438\u0434\u0435, PHP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435:<\/p>\n<ol>\n<li>\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440<\/li>\n<li>\u0421\u0423\u0411\u0414<\/li>\n<li>PHP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<\/ol>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Nginx, PostgreSQL \u0438 PHP-FPM.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker<\/h3>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Docker. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/www.docker.com\/products\/overview\">Docker<\/a>.<\/p>\n<h3>2. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432<\/h3>\n<p>  Docker \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 DockerFile \u0444\u0430\u0439\u043b\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c 3 \u043e\u0431\u0440\u0430\u0437\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445.<\/p>\n<h4>DockerFileNginx<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">FROM nginx:mainline-alpine  RUN set -ex \\  && addgroup -g 82 -S www-data \\  && adduser -u 82 -D -S -G www-data www-data \\     && mkdir -p \/etc\/pki\/nginx\/ \\     && apk update \\     && apk --no-cache add --update openssl \\     && openssl dhparam -out \/etc\/pki\/nginx\/dhparams.pem 4096 \\     && sed -i -e 's\/user\\s*nginx;\/user  www-data www-data;\/g' \/etc\/nginx\/nginx.conf \\     && sed -i -e 's\/worker_processes\\s*1;\/worker_processes  auto;\/g' \/etc\/nginx\/nginx.conf \\     && rm -rf \/var\/cache\/apk\/*  COPY config\/website.conf \/etc\/nginx\/conf.d\/website.conf <\/code><\/pre>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c DockerFile \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f www-data \u0441 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 82 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Nginx. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 COPY \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 config\/website.conf. \u041e\u043d\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \/etc\/nginx\/conf.d\/website.conf.<\/p>\n<h4>DockerFilePostgresql<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">FROM postgres:9.5.2  RUN localedef -i en_US -c -f UTF-8 -A \/usr\/share\/locale\/locale.alias en_US.UTF-8 ENV LANG en_US.utf8<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0437\u0435, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0431\u0440\u0430\u0437\u0430 postgres:9.5.2 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u0438 \u0438 \u044f\u0437\u044b\u043a\u0430.<\/p>\n<h4>DockerFile<\/h4>\n<p>  <\/p>\n<pre><code>FROM alpine:edge  # Timezone ENV TIMEZONE Europe\/Moscow ENV PHP_MEMORY_LIMIT 1024M ENV MAX_UPLOAD 128M ENV PHP_MAX_FILE_UPLOAD 128 ENV PHP_MAX_POST 128M&lt;\/blockquote&gt;  RUN set -ex \\ \t&& addgroup -g 82 -S www-data \\ \t&& adduser -u 82 -D -S -G www-data www-data \\ \t&& echo &quot;@testing http:\/\/dl-4.alpinelinux.org\/alpine\/edge\/testing&quot; &gt;&gt; \/etc\/apk\/repositories \\     && apk update \\     && apk upgrade \\     && apk add --update tzdata \\ \t&& cp \/usr\/share\/zoneinfo\/${TIMEZONE} \/etc\/localtime \\ \t&& echo &quot;${TIMEZONE}&quot; &gt; \/etc\/timezone \\     && apk --update add --no-cache php7-fpm@testing php7-mcrypt@testing php7-openssl@testing php7-json@testing php7-mysqli@testing php7-session@testing php7-gd@testing php7-xmlreader@testing php7-xmlrpc@testing \\     php7-zip@testing php7-iconv@testing php7-curl@testing php7-zlib@testing php7@testing php7-ctype@testing php7-pgsql@testing php7-pdo_pgsql@testing bash rsync \\     && sed -i -e &quot;s\/;daemonize\\s*=\\s*yes\/daemonize = no\/g&quot; \/etc\/php7\/php-fpm.conf \\     && sed -i -e &quot;s\/listen\\s*=\\s*127.0.0.1:9000\/listen = [::]:9000\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i -e &quot;s\/;chdir\\s*=\\s*\\\/var\\\/www\/chdir = \\\/usr\\\/src\\\/app\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i -e &quot;s\/user\\s*=\\s*nobody\/user = www-data\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i -e &quot;s\/group\\s*=\\s*nobody\/group = www-data\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i -e &quot;s\/;clear_env\\s*=\\s*no\/clear_env = no\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i -e &quot;s\/;catch_workers_output\\s*=\\s*yes\/catch_workers_output = yes\/g&quot; \/etc\/php7\/php-fpm.d\/www.conf \\     && sed -i &quot;s|;date.timezone =.*|date.timezone = ${TIMEZONE}|&quot; \/etc\/php7\/php.ini \\     && sed -i &quot;s|memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|&quot; \/etc\/php7\/php.ini \\     && sed -i &quot;s|upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|&quot; \/etc\/php7\/php.ini \\     && sed -i &quot;s|max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|&quot; \/etc\/php7\/php.ini \\     && sed -i &quot;s|post_max_size =.*|post_max_size = ${PHP_MAX_POST}|&quot; \/etc\/php7\/php.ini \\     && sed -i &quot;s\/;cgi.fix_pathinfo=1\/cgi.fix_pathinfo=0\/&quot; \/etc\/php7\/php.ini \\     && apk del tzdata \\     && rm -rf \/var\/cache\/apk\/*  COPY . \/usr\/src\/app  RUN chown -R www-data:www-data \/usr\/src\/app  EXPOSE 9000  CMD [&quot;php-fpm7&quot;]<\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u043d\u0430\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f PHP \u0438 PHP-FPM. \u0414\u0430\u043b\u0435\u0435, \u043c\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \/usr\/src\/app, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PHP-FPM.<\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 DockerFile&#8217;\u043e\u0432<\/h4>\n<p>  \u0418 \u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0435\u0441\u0442\u044c DockerFile&#8217;\u044b, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b. \u041e\u0431\u0440\u0430\u0437\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>docker build -t myusername\/myproject-nginx:latest -f DockerfileNginx .<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker build -t myusername\/myproject-postgresql:latest -f DockerfilePostgreSql .<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker build -t myusername\/myproject:latest .<\/code><\/pre>\n<p>  \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u044d\u0442\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c &#8212;no-cache, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435.<\/p>\n<p>  \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u044b, \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u043c \u0438\u0445 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0430 Docker Hub. \u0422\u0435\u043f\u0435\u0440\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 Docker Hub. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>docker push myusername\/myproject-nginx:latest<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker push myusername\/myproject-postgresql:latest<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker push myusername\/myproject:latest<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/h3>\n<p>  \u041c\u044b \u043f\u043e\u0447\u0442\u0438 \u0443 \u0446\u0435\u043b\u0438! \u041d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0445. \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code>docker pull myusername\/myproject-nginx:latest<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker pull myusername\/myproject-postgresql<\/code><\/pre>\n<p>  <\/p>\n<pre><code>docker pull myusername\/myproject<\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<pre><code class=\"bash\">docker run \u2014name myproject-nginx -d -p 80:80 myusername\/myproject-nginx:latest<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">docker run \u2014name myproject-postgresql9.5.2 -d -p 5432:5432 myusername\/myproject-postgresql9.5.2:latest<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">docker run \u2014name myproject -d -p 9000:9000 myusername\/myproject:latest <\/code><\/pre>\n<p>  \u0412\u0443\u0430\u043b\u044f! \u041d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043d\u0430 Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445. \u0418 \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u0441\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c-\u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u044f \u0431\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 <a href=\"https:\/\/docs.docker.com\">Docker<\/a>.<\/p>\n<p>  \u0412\u0441\u0435\u043c \u0436\u0435\u043b\u0430\u044e \u0443\u0441\u043f\u0435\u0445\u043e\u0432 \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439!<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/316802\/\"> https:\/\/habrahabr.ru\/post\/316802\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u043e\u0440\u043e\u0442\u044b. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b.<\/p>\n<p>  \u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0438\u0434\u0435, PHP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435:<\/p>\n<ol>\n<li>\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440<\/li>\n<li>\u0421\u0423\u0411\u0414<\/li>\n<li>PHP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<\/ol>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Nginx, PostgreSQL \u0438 PHP-FPM.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-281964","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281964"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281964\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}