使用Docker-Compose搭建nginx+php+mysql基础应用
PHP
为了能连接mysql数据库,php还需要安装相关的插件
首先需要建立docker-php目录
mkdir docker4php
创建Dockerfile
vi Dockerfile
添加以下内容1
1
2
3
4FROM php:7.1-fpm-alpine
Run apt-get update \
&& apt install iputils-ping \
&& docker-php-ext-install mysqli && docker-php-ext-enable mysqli
Mysql
- 从Docker Hub拉取最新版的mysql镜像 <sup>2</sup>
- `sudo pull mysql`
Docker-Compose
- 下载对应系统版本的docker-compose,上传到服务器,并添加执行权限;除此之外,还可以使用脚本安装<sup>3</sup>
使用docker-compose创建项目4
建立项目结构
1
2
3
4
5
6mkdir npm4compose
cd npm4compose
mkdir conf.d php html && touch docker-compose.yml
cd conf.d && touch nginx.conf
cd html && touch index.php && echo "<?php phpinfo(); ?>" >index.php
cp ~/docker4php/Dockerfile ./php/目录结构如下
1
2
3
4
5
6
7
8npm4compose/
|—— conf.d #nginx配置文件目录
|—— nginx.conf #自定义nginx配置文件
|—— docker-compose.yml # compose文件
|—— html #网站根目录
|—— index.php
|—— php #php目录
|—— Dockerfile
编辑
docker-compose.yml
文件5 61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36version: '3'
services:
nginx:
image: nginx:lastest
ports: #端口映射
- "80:80"
depends_on: #依赖关系,需要先运行php
- "php"
volumes:
- "${PWD}/conf.d:/etc/nginx/conf.d" #将宿主机上nginx配置文件映射到容器中
- “${PWD}/html:/usr/share/nginx/html” #映射网站根目录
networks:
- d_net
container_name: "compose-nginx" #容器名称
php:
build: ./php #指定build Dockerfile生成镜像
image: php:7.1-fpm-alpine
ports:
- "9000:9000"
volumes:
- "$PWD/html:/var/www/html"
networks:
- d_net:
container_name: "compose-php"
mysql:
image: mysql:8.0
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD={your_passwd}
networks:
- d_net
container_name: "compose-mysql"
networks: #配置docker 网络
app_net:
driver: bridge配置本地nginx.conf文件7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19server{
listen 80;
server_name localhost;
location /{
root /var/www/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
}
}运行docker-compose,
docker-compose up -d