亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 如何在Mac上通過docker配置PHP開發環境

如何在Mac上通過docker配置PHP開發環境

熱門標簽:400電話個人能不能辦理 手機外呼系統什么原理 凱立德地鐵站地圖標注 上海400客服電話怎么申請 滄州電銷外呼系統價格 合肥ai電銷機器人費用 溫州外呼系統招商 銀行信貸電話機器人 天津電銷外呼系統違法嗎

使用docker-compose配置開發環境

一般一個基本的PHP開發環境包括PHP、PHP-FPM、WEB服務器、MySQL數據庫,另外還會有Redis或memcache等相關NoSQL服務。我主要是通過docker-compose來配置服務。

什么是docker-compose

docker-compose是一個通過YAML文件來定義項目,項目中包含單個或多個容器服務。一般配置文件名為:docker-compose.yml。

目錄結構

你可以按自己的喜好組織項目,下面是我用的方法,app 目錄放的是應用的代碼,services 下面是創建服務需要用的東西,有些服務需要我們自己去創建鏡像,在一個 Dockerfile 文件里說明一下你想要的鏡像是什么樣的。在創建自定義鏡像的時候也可能需要用到一些額外的文件,比如一些配置文件,一般在創建鏡像的時候會把這些配置文件復制到鏡像里。

MySQL

mysql是數據服務,先去給這個服務添加一個數據卷,然后在這個服務里使用一下這個數據卷,把數據庫生成的數據放到這里,這樣即使我們刪除容器,數據服務里的數據也會保留在主機上,下回創建容器的時候,可以繼續使用已有的數據。在 volumes 下面,添加一個名字是 mysql 的數據卷:

volumes: mysql: driver: local

然后再去添加一個名字是 MySQL的服務,指定一下服務使用的鏡像,這個鏡像我們也可以用自己創建的 Dockerfile 去創建一下,或者你不打算定制鏡像,也可以直接使用現成的,這里我用了 mysql:5.7 這個鏡像。注意最好設置具體要使用的版本。

這個鏡像里有一些環境變量,我們可以在定義服務的時候去設置一下它們的值,這里我設置了 root 用戶的密碼,要創建的數據庫,用戶名,還有密碼,你可以 根據自己的需求去修改這些變量的值。

在 mysql 服務上我用了 volumes 為它指定了一個 MySQL 數據卷,掛載的位置是容器的 /var/lib/mysql ,這是存儲數據庫的默認的地方。因為我本機安裝了MySQL服務,3306端口被占用了,所以指定6306端口映射到容器的3306

version: "3"services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_DATABASE: "app" MYSQL_USER: "app" MYSQL_PASSWORD: "123456" volumes: - ./services/mysql/data:/var/lib/mysql ports: - "6306:3306"

測試

在我們的 compose 文件里現在已經有了一個叫 mysql 的服務,在命令行工具下,進入到項目所在的目錄,執行:

docker-compose up

然后你就會在終端上看到安裝鏡像和啟動容器的過程,然后另開一個命令終端,執行:

docker-compose execmysql bash

進入mysql容器中,然后進入數據庫檢查一下:

mysql -uroot -pshow databases;

+--------------------+| Database           |

+--------------------+| information_schema |

| app                |

| mysql              |

| performance_schema || sys                |

+--------------------+5 rows in set (0.03 sec)

這個時候我們發現mysql容器已經可用了

php

定義一個解釋 php 的服務,我打算自己創建這個服務用的鏡像,所以用了 build,而不是 image 。我告訴了 docker 自己要創建的這個鏡像要使用的那個 Dockerfile 文件的位置(./services/php/Dockerfile)。

volumes 下面是服務用的數據卷,我把 compose 文件所在目錄下的 app 這個目錄,掛載到了容器的 /www/html/app 這個位置上了。這樣我可以直接修改項目的代碼,然后立即看到結果;同時由于本機9000端口被占用,指定9090端口映射到容器的9000端口

php: build: context: ./services/php dockerfile: Dockerfile volumes: - ./app:/www/html/app ports: - "9090:9000"

Dockerfile

構建 php 服務的鏡像用的 Dockerfile 是 ./services/php/Dockerfile。FROM,設置了一下這個鏡像要基于哪個鏡像去創建,我用了 php:7.1-fpm 這個官方提供的鏡像。RUN 了幾行命令,主要是去安裝一些軟件包,比如一些額外的 php 擴展。在安裝這些擴展之前 ,你需要先安裝擴展依賴的一些其它的軟件包,這里的 libpng12-dev,libjpeg-dev,就是 gd 這個 php 擴展需要的軟件包。然后我又 COPY 了配置文件到鏡像里面。

FROM php:7.1-fpm

RUN apt-get update apt-get install -y libpng12-dev libjpeg-dev \

  rm -rf /var/lib/apt/lists/* \

  docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \

  docker-php-ext-install gd mysqli pdo_mysql zip opcache

COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini

php服務中遇到的坑

PHP這個鏡像中軟件是使用的Debian的源,因為眾所周知的緣故會導致鏡像安裝不成功,如圖所示:

這個時候我們就需要更換源了,第一次換成了中科大的源,然后發現不行,第二次更換成了阿里云的源,完美完成鏡像安裝,修改過后的Dockerfile如下:

FROM php:7.1-fpm

RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \

  apt-get update apt-get install -y libpng12-dev libjpeg-dev \

  rm -rf /var/lib/apt/lists/* \

  docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \

  docker-php-ext-install gd mysqli pdo_mysql zip opcache

COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini

使用sed命令搜索軟件源文件,把Debian域名修改為阿里云域名

php.ini

自定義的 php 配置。把你想要的 php 配置放到這個文件里,重新 build 鏡像,然后再次啟動 php 服務的時候會用新的鏡像重新創建容器,這樣配置就會生效了。

memory_limit = 256Mpost_max_size = 100Mupload_max_filesize = 100M

Nginx

用 image 指定了要使用的鏡像,ports 設置了發布的端口號,讓主機上的 8000 對應容器的 80 。depends_on 可以設置服務的依賴,我讓 nginx 服務依賴之前定義的 php ,這樣會先啟動 php ,然后再啟動 nginx 。

另外我又用了 volumes 自己設置了一個數據卷,讓主機上包含 nginx 配置文件的目錄,對應容器里的 nginx 服務的配置文件目錄,這樣我就可以直接在本機上修改 nginx 的配置文件,然后重新啟動一下 nginx 服務,配置就可以生效了。這種方法適用在開發環境上,因為修改了配置不需要重新 build 鏡像,在生產環境中,你需要自己 build 這個 nginx 鏡像,把想要的配置直接復制到鏡像里去。在開發階段有的時候我們需要查看nginx的日志,然后我配置了日志目錄映射到容器,最后一個地址是代碼目錄

nginx:    image: nginx:1.12.2    ports:

      - "8000:80"    depends_on:

      - php    volumes:

      - ./services/nginx/config:/etc/nginx/conf.d

      - ./services/nginx/logs:/etc/nginx/logs/

      - ./app:/www/html/app

app.conf

./services/nginx/config/app.conf,這是一個最基本的 nginx 配置文件,設置了應用的 root 是在 /www/html/app 這里,我們已經把主機上的 app 目錄掛載到了容器里的 /www/html/app 這個地方。

注意這條指令:fastcgi_pass php:9000; 這里的 php 是我們定義的 php 這個服務的名字,在 compose 文件里定義的服務,它們之間可以使用服務的名字相互進行溝通,因為 docker 內置了 DNS 功能。

server {   
listen       80; 
server_name  localhost; 
root         /www/html/app;
# access_log  /etc/nginx/logs/app.access.log  main;
location / {        
	index  index.html index.htm index.php; 
	autoindex   on;
	#  include    /usr/local/etc/nginx/conf.d/php-fpm;
	#  # include  /usr/local/etc/nginx/conf.d/pathinfo.conf;
	if (!-e $request_filename) { 
	###一級目錄下
	rewrite ^/(.*)$ /index.php/$1 last; ###域名下的二級目錄
	#rewrite ^/html/(.*)$ /uuabc_home/index.php/$1 last;
	}   
}
location = /info { 
	allow   127.0.0.1; 
	deny    all;
}   
location ~ \.php(.*)$  { 
	# comment try_files $uri =404; to enable pathinfo
	# try_files $uri =404;
	fastcgi_pass                php:9000; 
	fastcgi_index               index.php; 
	fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;   
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
	fastcgi_param PATH_INFO $fastcgi_path_info;  
	fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
	include /etc/nginx/fastcgi_params;
}   
# error_page  404     /404.html;
# error_page  403     /403.html;}

啟動

經過上面幾個步驟,我們已經把PHP開發最基本的搞好了,下面我們準備看下成果。
在 app 目錄下創建一個 index.php ,內容是:

?php phpinfo();

進入到項目下面,執行:

docker-compose up

打開瀏覽器訪問http://localhost:8000/,結果如圖所示:

連接數據庫

在app目錄有一個adminer.php文件,這個文件是一個類似于PHPmyadmin的數據庫管理工具,比較輕量級,訪問http://localhost:8000/adminer.php,如圖所示:

在表單服務器選項中填寫mysql,用戶名root,密碼填寫安裝MySQL服務時的root密碼,然后登陸進去,如圖所示:

然后我們就可以愉快的管理數據庫了。

總結

至此,我們對PHP基本開發環境已經安裝好了,如果需要安裝比如Redis或memcache等服務的話,可以自行度娘,自己動手。

以上就是如何在Mac上通過docker配置PHP開發環境的詳細內容,更多關于在Mac上通過docker配置PHP開發環境的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Docker 安裝 PHP并與Nginx的部署實例講解
  • docker中實現安裝php拓展步驟講解
  • Docker搭建OpenLDAP+phpLDAPadmin統一用戶認證的方法
  • Docker搭建php環境教程詳解
  • docker 安裝 php-fpm 服務 / 擴展 / 配置的示例教程詳解
  • docker靈活的構建PHP環境的實現
  • docker部署LNMP&phpMyAdmin的方法步驟
  • php之使用docker運行workerman案例講解

標簽:金華 赤峰 酒泉 怒江 七臺河 白城 洛陽 溫州

巨人網絡通訊聲明:本文標題《如何在Mac上通過docker配置PHP開發環境》,本文關鍵詞  如,何在,Mac,上,通過,docker,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何在Mac上通過docker配置PHP開發環境》相關的同類信息!
  • 本頁收集關于如何在Mac上通過docker配置PHP開發環境的相關信息資訊供網民參考!
  • 推薦文章
    青青久久国产成人免费网站| 久久久久久久免费视频| 高清一级片| 日本免费乱人伦在线观看| 精品视频在线观看一区二区三区| 二级特黄绝大片免费视频大片| 91麻豆国产福利精品| 99久久精品费精品国产一区二区| 一 级 黄 中国色 片| 久久精品人人做人人爽97| 国产91丝袜高跟系列| 欧美a免费| 99久久精品国产国产毛片| 美女免费毛片| 久久久成人影院| 天堂网中文在线| 999久久久免费精品国产牛牛| 国产不卡在线看| 精品在线观看一区| 日本在线不卡免费视频一区| 国产一区二区精品久久| 国产精品自拍亚洲| 国产精品自拍亚洲| 91麻豆精品国产高清在线 | 色综合久久天天综线观看 | 国产一区二区精品久久| 国产视频在线免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎影视久久久| 99热视热频这里只有精品| 精品视频免费在线| 欧美一级视| 国产91素人搭讪系列天堂| 久久国产一区二区| 成人免费福利片在线观看| 黄色短视频网站| 青青久久国产成人免费网站| 色综合久久手机在线| 国产一区二区精品在线观看| 可以免费看污视频的网站| 欧美爱色| 香蕉视频一级| 久草免费在线色站| 日韩在线观看免费| 免费的黄色小视频| 美女免费黄网站| 精品视频免费在线| 欧美激情在线精品video| 尤物视频网站在线观看| 一 级 黄 中国色 片| 成人免费福利片在线观看| a级毛片免费全部播放| 天堂网中文在线| 国产a一级| 999久久久免费精品国产牛牛| 欧美激情在线精品video| a级毛片免费全部播放| 久草免费在线色站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美国产日韩在线| 天天做日日干| 黄视频网站在线免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 999久久狠狠免费精品| 成人a大片高清在线观看| 国产精品1024永久免费视频| 一本高清在线| 精品视频在线观看一区二区三区| 99久久精品国产国产毛片| 国产欧美精品午夜在线播放| 韩国毛片免费大片| 在线观看成人网| 亚洲第一色在线| 97视频免费在线观看| 日韩av东京社区男人的天堂| 精品视频在线观看一区二区三区| 国产91素人搭讪系列天堂| 日韩在线观看视频黄| 四虎影视库国产精品一区| 精品久久久久久中文| 久久99中文字幕| 一级女性大黄生活片免费| 欧美日本国产| 国产91素人搭讪系列天堂| 欧美激情一区二区三区中文字幕| 国产伦久视频免费观看视频| 精品视频在线看 | 99热精品一区| 午夜久久网| 成人a级高清视频在线观看| 国产亚洲免费观看| 99久久精品国产国产毛片| 国产伦久视频免费观看视频| 精品国产一级毛片| 99久久网站| 国产成人欧美一区二区三区的| 国产成人精品综合在线| 麻豆午夜视频| 欧美激情一区二区三区视频| 日韩中文字幕在线观看视频| 一级毛片看真人在线视频| 麻豆午夜视频| 国产精品自拍在线| 欧美α片无限看在线观看免费| 国产成人精品综合| 国产伦精品一区二区三区无广告 | 欧美另类videosbestsex视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成人啪精品| 欧美激情一区二区三区在线 | 国产麻豆精品hdvideoss| 九九久久国产精品| 国产高清视频免费| 日韩在线观看免费| 日日夜夜婷婷| 午夜激情视频在线观看| 国产不卡在线看| 日韩中文字幕在线播放| 日本伦理黄色大片在线观看网站| 欧美激情一区二区三区视频| 超级乱淫黄漫画免费| 色综合久久手机在线| 国产成a人片在线观看视频| 成人高清视频免费观看| 久久精品人人做人人爽97| 成人免费观看的视频黄页| 国产原创中文字幕| 久久成人综合网| 日韩专区一区| 精品视频在线观看视频免费视频| 麻豆午夜视频| 国产不卡高清| 成人高清视频免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女免费毛片| 美女免费黄网站| 一级片片| 麻豆午夜视频| 91麻豆精品国产综合久久久| 国产一区二区精品久久| 精品视频在线看 | 日本在线不卡免费视频一区| 欧美国产日韩久久久| 久久成人综合网| 成人a级高清视频在线观看| 国产麻豆精品hdvideoss| 精品国产一区二区三区久久久狼| 香蕉视频一级| 欧美激情一区二区三区在线 | 久久久久久久免费视频| 精品视频在线看 | 免费的黄色小视频| 日韩在线观看视频黄| 亚久久伊人精品青青草原2020| 国产一区二区精品在线观看| 精品国产一区二区三区精东影业| 亚洲第一色在线| 99色视频在线| 欧美大片a一级毛片视频| 国产视频一区在线| 国产高清视频免费| 国产原创中文字幕| 国产综合成人观看在线| 日韩在线观看视频网站| 97视频免费在线观看| 日本特黄特色aaa大片免费| 国产不卡在线看| 一级毛片看真人在线视频| 可以在线看黄的网站| 四虎影视久久久| 在线观看成人网| 精品久久久久久中文| 色综合久久手机在线| 99久久网站| 精品国产一区二区三区免费 | 精品久久久久久中文字幕一区| 午夜久久网| 精品在线观看一区| 一级毛片看真人在线视频| 一级女性大黄生活片免费| 欧美另类videosbestsex视频| 999久久久免费精品国产牛牛| 日本特黄特色aaa大片免费| 91麻豆精品国产高清在线 | 高清一级做a爱过程不卡视频| 国产综合成人观看在线| 日日爽天天| 国产麻豆精品hdvideoss| 欧美日本免费| 日韩中文字幕在线播放| 99久久精品费精品国产一区二区| 国产高清视频免费| 国产视频久久久| 91麻豆精品国产综合久久久| 青青青草影院| 欧美一级视| 99色播| 麻豆午夜视频| 日韩综合| 精品久久久久久中文字幕一区|