docker 搭建php開發環境
阿新 • • 發佈:2019-01-04
本地環境: ubuntu15.10 +docker
關於安裝docker ,網上有很多文章,官網也有教程,這裡不再講述.
這裡需要用到的映象有
php:5.6-fpm
mysql:latest
mongo:latest
nginx:1.9.6
redis:latest
下載映象
sudo docker pull 映象名稱
比如 sudo docker pull php:5.6-fpm
檢視映象
sudo docker images
我們需要在php:5.6-fpm 中安裝一些擴充套件,比如mongodb ,redis 等等
1. 把容器後臺執行起來
docker run -it -d container_id
2 鑽進容器,安裝擴充套件
docker exec -it container_id /bin/bash
pecl intall mongodb
pecl install redis
3 在php.ini檔案中加上 extension (php.ini 檔案可以在phpinfo()中查詢)
4 退出容器 exit
5 把更改的容器提交為新的映象
docker commit container_id alex/xxxx-xxxx
最關鍵的是寫docker-compose.yml 檔案,裡面是具體埠對映,實體地址對映,各種服務的連結
nginx-dev:
image: nginx:1.9.6
ports:
- "8080:8080"
- "8081:8081"
volumes:
- /srv/docker3/web1:/usr/share/nginx/html/web1
- /srv/docker3/web2:/usr/share/nginx/html/web2
- /srv/docker3/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
# - /srv/docker3/nginx/cert:/etc/nginx/cert:ro
- /srv/docker3/nginx/fastcgi_params_pathinfo: /etc/nginx/fastcgi_params_pathinfo:ro
links:
- php-fpm-dev:php-fpm-dev
php-fpm-dev:
image: alex/php-fpm-5.6
expose:
- "9000"
volumes:
- /srv/docker3/web1:/usr/share/nginx/html/web1:ro
- /srv/docker3/web2:/usr/share/nginx/html/web2:ro
links:
- mysql-dev:mysql-dev
- memcached-dev:memcached-dev
- redis-dev:redis-dev
- mongo-dev:mongo-dev
mysql-dev:
image: mysql:5.7
expose:
- "3306"
volumes:
- /srv/docker3/mysql/mysqldata:/var/lib/mysql
- /srv/docker3/mysql/mysqlconf:/etc/mysql/conf.d
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=dev002
- MYSQL_USER=office
- MYSQL_PASSWORD=office
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
memcached-dev:
image: memcached:1.4
command: memcached -m 32
expose:
- "11211"
redis-dev:
image: redis:3.0.5
command: redis-server
expose:
- "6379"
mongo-dev:
image: mongo:latest
expose:
- "27017"
volumes:
- /srv/docker3/mongo/mongodata:/data/db
~
~
在/srv/docker3 分別新建如下目錄 mongo mysql nginx web1 web2
在nginx 目錄下 有這兩個檔案 fastcgi_params_pathinfo nginx.conf
現在來看具體的nginx 設定,一個虛擬主機可以這麼寫,同理另外一個可以參照這個寫,把名字和具體裡目錄更改下就行了
server {
listen 8080;
server_name web1;
location / {
root /usr/share/nginx/html/web1;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
autoindex on;
}
location ^~ /.git {
deny all;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php {
root /usr/share/nginx/html/web1;
fastcgi_pass php-fpm-dev:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
send_timeout 60;
include fastcgi_params_pathinfo;
autoindex on;
}
}
這些都準備就緒後,可以試一試 切換到docker-compose 所在目錄下
docker-compose up -d
如果有錯誤 請仔細檢視 docker-compose config 或者具體檢視某個容器的日誌
檢視日誌方法 docker ps -a 列出了所有容器(包括退出的)
然後 docker logs container_id 可以檢視具體的容器的日誌
根據日誌分析配置哪裡出錯