簡介
簡述一下我用docker來配置laravel環境
軟件鏡像
- php:7.2-rc-fpm-alpine
- mysql:5.6
- nginx:1.12.2-alpine
配置環境
- Ubuntu:16.04
- macOS:Sierra
以上兩個操作系統我都實驗過,均能運行
准備
注意點:要是宿主機上面開着mysql和nginx服務的,請停止服務,要不然兩個服務分別占用:3306和80或443端口,使得容器無法啟動
service mysql stop
ps -ef|grep nginx
kill pid# nginx 的進程號
配置過程
從github上下載配置文件
git clone https://github.com/daimonster/PHP-env.git
切換版本
git checkout laravel5.5
生成php鏡像
cd php && docker build -t dai/php:laravel .
特別要注意的是鏡像名字不能隨便填,如果想要改成別的名字,一定要記得將docker-compose.yml文件中的鏡像的名字改成一樣的
順便介紹一些有用的docker操作:
- 批量刪除所有鏡像:docker rmi $(docker images -q)
- 批量停止所有容器:docker stop $(docker ps -aq)
- 批量刪除所有容器:docker rm $(docker ps -aq)
運行docker-composer
docker-compose.yml內容
version: "3"
services:
nginx:
image: nginx:1.12.2-alpine
ports:
#改成127.0.10.10這樣不會與localhost沖突
- "127.0.10.10:80:80"
- "127.0.10.10:443:443"
volumes:
- ~/Git-Documents:/home/code:rw # ~/Git-Documents 是我自己的存放代碼的目錄,需要改成自身存放代碼的地方
- ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro#配置nginx
- ./conf/nginx/vhost:/etc/nginx/conf.d:ro#配置nginx
- ./log/nginx:/var/log/nginx:rw
networks:
- code-network
php:
image: dai/php:laravel
volumes:
- ~/Git-Documents:/home/code:rw # 這里同上
- ./conf/php/php.ini-development:/usr/local/etc/php/php.ini:ro # 配置php
networks:
- code-network
mysql:
image: mysql:5.6
ports:
- "3310:3306"
volumes:
- ./conf/mysql/my.cnf:/etc/mysql/my.cnf:ro
- ./data/mysql:/var/lib/mysql:rw
- ./log/mysql:/var/log/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: "test"
MYSQL_PASSWORD: "test123"
networks:
code-network:
driver: bridge
運行命令:
# 前台運行
docker-composer up
# 后台運行
docker-composer up -d
對php容器進行修改
用docker ps
查看正在運行中的容器,然后進入php容器
docker exec -it [容器ID] sh
創建laravel項目
composer create-project laravel/laravel Laravel --prefer-dist "5.4.*"
給訪問用戶權限
sudo chown -R :www-data /home/ubuntu/Code/Laravel
sudo chmod -R 775 /home/ubuntu/Code/Laravel/storage
如果能成功顯示laravel頁面,就OK了