本地环境: 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 可以查看具体的容器的日志
根据日志分析配置哪里出错