使用Docker-Compose搭建nginx+php+mysql基础应用
-
PHP
-
为了能连接mysql数据库,php还需要安装相关的插件
-
首先需要建立docker-php目录
mkdir docker4php
-
创建Dockerfile
vi Dockerfile
-
添加以下内容1
FROM 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镜像 2
sudo pull mysql
- 从Docker Hub拉取最新版的mysql镜像 2
-
Docker-Compose
- 下载对应系统版本的docker-compose,上传到服务器,并添加执行权限;除此之外,还可以使用脚本安装3
-
使用docker-compose创建项目4
-
建立项目结构
mkdir 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/
-
目录结构如下
npm4compose/ |—— conf.d #nginx配置文件目录 |—— nginx.conf #自定义nginx配置文件 |—— docker-compose.yml # compose文件 |—— html #网站根目录 |—— index.php |—— php #php目录 |—— Dockerfile
-
-
编辑
docker-compose.yml
文件5 6version: '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
server{ 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
-
-
-
参考