摘要:我花了大概一周的時間進行了各種踩坑及實驗,最終得出了一份可以使用的及內含如下支持可選,如應用,及的配置會有所變化分為兩部分,一部分為服務,一部分為下可選先貼代碼吧版本,如需安裝則取消注釋基礎依賴
我花了大概一周的時間進行了各種踩坑及實驗,最終得出了一份可以使用的dockerfile及compose
內含如下支持php7
mysql_pdo
postgre_pdo
phpredis
swoole(可選,如應用swoole,dockerfile及nginx的配置會有所變化)
dockerfile分為兩部分,一部分為php服務,一部分為nginx(swoole下可選)
先貼代碼吧
### php7 ###
FROM php:7.2-rc-fpm-alpine3.6 ENV TIMEZONE Asia/Shanghai ENV PHP_MEMORY_LIMIT 512M ENV MAX_UPLOAD 50M ENV PHP_MAX_FILE_UPLOAD 200 ENV PHP_MAX_POST 100M ## swoole版本,如需安裝swoole則取消注釋 #ENV PHP_EXT_SWOOLE=swoole-2.0.6 ENV PHP_REDIS=3.1.4 #基礎依賴 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories && apk update && apk add tzdata curl && cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone && apk --update --repository=http://dl-4.alpinelinux.org/alpine/edge/testing add php7-common php7-intl php7-gd php7-mcrypt php7-openssl php7-gmp php7-json php7-dom php7-pdo php7-zip php7-zlib php7-mysqli php7-bcmath php7-pdo_mysql php7-pgsql php7-pdo_pgsql php7-gettext php7-xmlreaderhp7-xmlrpc php7-bz2 php7-iconv php7-curl php7-ctype php7-fpm php7-mbstring php7-session php7-phar curl curl-dev postgresql-dev ## 如果使用swoole 需要取消下行注釋 # hiredis-dev libmcrypt-dev gmp-dev icu-dev linux-headers musl --virtual .phpize-deps $PHPIZE_DEPS tzdata && php -r "copy("https://getcomposer.org/installer", "composer-setup.php");" && php composer-setup.php && php -r "unlink("composer-setup.php");" && mv composer.phar /usr/local/bin/composer && composer self-update && sed -i -e "s/;daemonizes*=s*yes/daemonize = no/g" /etc/php7/php-fpm.conf && sed -i -e "s/listens*=s*127.0.0.1:9000/listen = 9000/g" /etc/php7/php-fpm.d/www.conf && sed -i "s|;date.timezone =.*|date.timezone = ${TIMEZONE}|" /etc/php7/php.ini && sed -i "s|memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|" /etc/php7/php.ini && sed -i "s|upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|" /etc/php7/php.ini && sed -i "s|max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|" /etc/php7/php.ini && sed -i "s|post_max_size =.*|max_file_uploads = ${PHP_MAX_POST}|" /etc/php7/php.ini && sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php7/php.ini && sed -i "s/;extension=php_pgsql.dll/extension=php_pgsql.dll/" /etc/php7/php.ini && sed -i "s/;extension=php_pdo_pgsql.dll/extension=php_pdo_pgsql.dll/" /etc/php7/php.ini && mkdir -p /usr/src/php/ext/redis && curl -L https://github.com/phpredis/phpredis/archive/$PHP_REDIS.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 && echo "redis" >> /usr/src/php-available-exts && docker-php-ext-install redis pgsql pdo pdo_mysql pdo_pgsql && rm -rf /var/cache/apk/* # 如需安裝swoole,取消以下注釋 #RUN # cd /tmp # && pecl download $PHP_EXT_SWOOLE # && mkdir -p /tmp/$PHP_EXT_SWOOLE # && tar -xf ${PHP_EXT_SWOOLE}.tgz -C /tmp/$PHP_EXT_SWOOLE --strip-components=1 # && docker-php-ext-configure /tmp/$PHP_EXT_SWOOLE --enable-async-redis --enable-openssl --enable-sockets=/usr/local/include/php/ext/sockets # && docker-php-ext-install /tmp/$PHP_EXT_SWOOLE # && rm -rf /tmp/${PHP_EXT_SWOOLE}* WORKDIR /www # 放入自己需要的代碼 #COPY . /www # 安裝composer依賴 #RUN composer install # php-fpm使用以下配置 EXPOSE 9000 CMD ["php-fpm"] # swoole 使用以下配置 EXPOSE 9501 # 啟動swoole server CMD ["php","src/server","start"]
## swoole可以不依賴nginx 所以我多帶帶貼出php-fpm的nginx
nginx-dockerfile:
from nginx:1.13.6-alpine ENV TIME_ZONE Asiz/Shanghai RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories && apk update && apk add --no-cache tzdata && echo "${TIME_ZONE}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime COPY default.conf /etc/nginx/conf.d EXPOSE 80 STOPSIGNAL SIGTERM CMD ["nginx", "-g", "daemon off;"]
nginx_php-fpm:default.conf:
server { listen 80; server_name *.yourserver.com; location / { autoindex on; if ($request_filename !~* /(index.php|assets|uploads|phpinfo.php)) { rewrite ^/(.*)$ /index.php/$1 last; } } location ~ .php(/|$) { fastcgi_split_path_info ^(.+?.php)(/.*)$; fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } }
compose:
* swoole的編排模板很容易寫 我就不在這里貼出了
version: "2" services: php-fpm: image: "php-fpm" restart: always #日志系統,可不寫 #logging: # driver: fluentd # options: # fluentd-address: "logaddr:24224" # tag: "docker/{{.Name}}/{{.ID}}/{{.ImageName}}" php-nginx: image: "php-nginx" depends_on: #這幾個是轉義字符 但是不知道為什么就顯示出來了,使用的時候自己去掉一下 - php-fpm ports: - "80:80" links: - php-fpm restart: always #日志系統,可不寫 #logging: # driver: fluentd # options: # fluentd-address: "logaddr:24224" # tag: "docker/{{.Name}}/{{.ID}}/{{.ImageName}}"
我所做的是對php及nginx進行解耦
如果集群內有多個php服務需要互相訪問,
因為compose不允許兩個服務互相link
所以需要創建一個network在network中借助nginx進行互相訪問
但是目前只有v3版的compose支持本功能,很多舊集群都無法正常支持本功能,所以我就不貼出代碼了
編輯完成后,即可通過80端口訪問index.php了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27105.html
摘要:到目前為止我們已經學習了如何使用命令行在主機上運行。是由公司維護的公共注冊倉庫。其中有兩個結果,。第二個表示它來自于一位叫的用戶的倉庫。第一個結果沒有顯示列出倉庫則意味著它是受信任的官方頂級名稱空間存儲庫。將倉庫名和鏡像名分割開。 Working with Docker Hub 到目前為止我們已經學習了如何使用命令行在主機上運行Docker。你已經學習了如何下載鏡像,如何從已經存在的鏡...
摘要:將一個輕量級的容器虛擬化平臺和一組標準工作流程工具進行集成,來幫助你方便地管理和部署應用。主要包括哪些組件主要包括兩個組件開源的容器虛擬化平臺用于分享和管理容器的軟件即服務平臺。 【編者的話】本文來自 Docker 的官方文檔,詳細介紹了 Docker 的體系結構、重要概念、內部工作機理等內容,推薦不了解 Docker 內部原理的同學閱讀。 什么是 Docker? Docker 是...
摘要:導讀要從容器化開始,而容器又需要從開始,本文將介紹如何寫出一個優雅的文件。只要記住以上三點就能寫出不錯的。執行完成項目的構建。 導讀 Kubernetes要從容器化開始,而容器又需要從Dockerfile開始,本文將介紹如何寫出一個優雅的Dockerfile文件。 文章主要內容包括: Docker容器 Dockerfile 使用多階構建 感謝公司提供大量機器資源及時間讓我們可以實踐...
摘要:第一部分的內容介紹了如何部署配置和確保在的運行。這一部分中,我們將介紹如何使用構建容器,以及如何使用容器配置項目。除此之外,我們還將涉及如何用建立容器并部署到上。 這是我們使用GitLab和Rancher構建CI/CD流水線系列教程的第二部分。第一部分的內容介紹了如何部署、配置和確保GitLab在Rancher的運行。這一部分中,我們將介紹如何使用GitLab CI Multi-Run...
摘要:聯調測試,無需依賴他人。針對以上問題,有兩種解決方法,一個是自己搭建私有服務,另一個是用云服務的鏡像管理平臺如阿里云的容器鏡像服務。利用,先對阿里云的服務進行登錄。推送后,就能在阿里云的倉庫上看到這個鏡像。 Docker簡述 Docker是一種OS虛擬化技術,是一個開源的應用容器引擎。它可以讓開發者將應用打包到一個可移植的容器中,并且該容器可以運行在幾乎所有linux系統中(Windo...
閱讀 996·2023-04-25 14:45
閱讀 2773·2021-09-30 09:59
閱讀 3114·2021-09-22 15:48
閱讀 2425·2019-08-30 15:55
閱讀 3467·2019-08-30 15:44
閱讀 535·2019-08-29 14:07
閱讀 3412·2019-08-26 13:45
閱讀 536·2019-08-26 11:31