准备镜像
我使用的centos系统,docker-ce最新版本。
先准备好三个镜像
docker pull mysql:5.7
docker pull php:5.6-fpm
docker pull nginx:latest
注意,mysql和php不要使用最新版本,坑很多。
1
|
docker images #查看镜像 |
一、构建mysql容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=ziqin666 -v /mysql:/var/lib/mysql --name your_mysql mysql:5.7
配置容器(进入容器)
docker exec -it your_mysql bash
进入之后,要对用户进行授权,以便使用远程连接
连接mysql 输入密码:ziqin666 执行如下命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'ziqin666';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'ziqin666';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'ziqin666';
FLUSH PRIVILEGES;
此时可以使用客户端连接一下看看。(一定要把安全组规则对应端口打开)
二、构建php-fpm容器
准备工作
php.ini 默认是不存在的
在/home/app/phpfile文件夹下创建 php.ini文件和conf.d文件夹
创建容器
1
|
docker run -p 9000:9000 --name your_phpfpm -v /home/app/html:/ var /www/html -v /home/app/phpfile:/usr/local/etc/php --link your_mysql:mysql -d php:5.6-fpm |
命令说明:
- --name your_phpfpm : 将容器命名为 your_phpfpm。
- -v /home/app/html:/var/www/html : 将主机中项目的目录 /home/app/html 挂载到容器的 /var/www/html
安装 pdo 以便后边测试数据库连接,在docker的php容器中可以这样来安装
docker-php-ext-install pdo_mysql
安装其他插件也可以使用这种办法
并加入到php.ini
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo.dll
如果插件还不够就需要自己定制镜像
FROM php:7.0.12-fpm
MAINTAINER Tairy <tairyguo@gmail.com>
WORKDIR /working
RUN apt-get update --fix-missing && apt-get install -y \
g++ autoconf bash git apt-utils libxml2-dev libcurl3-dev pkg-config \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& docker-php-ext-install iconv curl mbstring \
xml json mcrypt mysqli pdo pdo_mysql zip \
&& docker-php-ext-configure gd \
--with-gd \
--with-freetype-dir=/usr/include/ \
--with-png-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-enable gd \
&& pecl install /pecl/redis-3.0.0.tgz \
&& docker-php-ext-enable redis \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/cache/apt/* \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /pecl
三、安装nginx
配置文件目录:/home/app/nginx/conf.d (注释:没有的文件自主创建哈)
在配置文件目录新建 default.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location ~ \.php$ { fastcgi_pass your_phpfpm:9000; #此处写docker里边php 的名称: your_phpfpm fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var /www/html/$fastcgi_script_name; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } |
注释:这里遇到了个小问题nginx启动不了,把上面的配置项中的所有tab空格重新换成空格键敲出来的空格,当然你也可以直接复制我上面的,因为它是正确的
创建容器
docker run -p 81:80 --name your_nginx \
-v