搭建php-nginx-mysql環境
使用mysql 5.7.29; php 7.2.29; nginx最新版
docker pull php:7.2.29-fpm
docker pull mysql:5.7.29
docker pull nginx
/var/www/docker-long.com目錄結構
mysql # 保存mysql數據
code # 放代碼
nginx # 存放nginx日誌
1 php依賴mysql, 所有要先運行mysql
# -e 啓動容器的時候傳參數, 設置root密碼
docker run -d --name=mysql -p 3306:3306 -v /var/www/docker-long.com/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=rootroot mysql:5.7.29
# 進入查看
docker exec -it mysql /bin/bash
# 進入容器中的mysql
mysql -uroot -p
2 docekr php
創建一個Dockerfile, 內容如下:
FROM php:7.2.29-fpm
RUN docker-php-ext-install pdo_mysql
docker build -t php7.2-fpm .
# docker inspect php7.2-fpm
# --link 剛纔的mysql容器id:別名; 在php代碼中不用寫ip:3308,用別名就可以 php7.2-fpm
docker run -d --name=php --link mysql:mysql -v /var/www/docker-long.com/code/:/var/www/html/ php7.2-fpm
3 nginx的配置
# nginx/conf.d下的default.conf內容; 注意代理是 php:9000
server {
listen 80;
server_name 127.0.0.1 long.com www.long.com;
root "/var/www/html";
location / {
index index.php index.html;
autoindex off;
}
location ~ \.php(.*)$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
運行, 掛載3個目錄分別是: 網站配置, logs日誌, 代碼
docker run -d --name=nginx -p 80:80 -v /var/www/docker-long.com/nginx/conf.d/:/etc/nginx/conf.d/ -v /var/www/docker-long.com/nginx/logs/:/var/log/nginx -v /var/www/docker-long.com/code/:/var/www/html/ --link php:php nginx
成功ok