18年剛出來實(shí)習(xí)的時(shí)候就搭建過lnmp開發(fā)環(huán)境迷帜,教程為docker 搭建LAMP開發(fā)環(huán)境色洞,拉的是一個(gè)集成的lnmp環(huán)境,今天使用mysql锋玲、nginx景用、php的鏡像來搭建多個(gè)容器的php-fpm環(huán)境惭蹂。
準(zhǔn)備
- 安裝docker
無腦教程可參考docker安裝 - 安裝docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
- 鏡像
拉取鏡像前,咱們?cè)O(shè)置一下docker加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://5a88fb64.m.daocloud.io
這里使用到的php是7.1版本的盾碗,后續(xù)在更新一個(gè)最新版本的7.3的docker-compose.yml吧。然后mysql用的還是5.7的廷雅,剛開始使用了mysql8的耗美,相比于5.7航缀,它的性能高很多,但也會(huì)有比較多的坑要過芥玉,這里先用5.7簡單點(diǎn)吧蛇摸。
docker pull nginx
docker pull php:7.1-fpm
docker pull mysql:5.7
執(zhí)行
- 寫docker-compose.yml文件
你可以理解為一個(gè)命令腳本文件灿巧,這些文件就一鍵創(chuàng)建docker容器,并設(shè)置好各個(gè)參數(shù)抠藕、端口、地址映射盾似、執(zhí)行l(wèi)inxu命令敬辣。你可以參考這個(gè)教程學(xué)習(xí)一下docker-compose常用的使用颜说,就像markdown一樣就那幾個(gè)常用的命令。 - 配置說明:
nginx配置說明:1门粪、項(xiàng)目目錄和nginx配置映射出來;2玄妈、配置端口和網(wǎng)絡(luò)配置
mysql配置說明:1、mysql數(shù)據(jù)data映射出來;2绎签、配置端口和網(wǎng)絡(luò)配置;3酝锅、配置
mysql帳號(hào)密碼
php-fpm配置說明:1、使用了dockerfile來構(gòu)建一個(gè)鏡像并啟動(dòng)一個(gè)容器使用搔扁;2爸舒、配置端口和網(wǎng)絡(luò)配置稿蹲;3、安裝需要用到的php擴(kuò)展到鏡像中 - docker-compose.yml文件
在docker-compose.yml目錄下執(zhí)行
docker-compose up -d
version: "3"
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
volumes:
- ./code:/code #創(chuàng)建項(xiàng)目根目錄苛聘,根據(jù)自己的情況來定
- ./nginx/conf.d:/etc/nginx/conf.d #可以把ngixn配置映射出來,便于修改
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/logs:/var/log/nginx
network_mode: "host"
mysql:
image: mysql:latest
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- ./mysql/data:/var/lib/mysql:rw #創(chuàng)建 /data/myql 目錄
- ./mysql/logs:/var/lib/mysql-logs:rw # /logs/mysql 目錄
ports:
- "3306:3306"
environment:
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_ROOT_PASSWORD: 123456
network_mode: "host"
php:
build: ./
container_name: fpm7.1
ports:
- "9000:9000"
working_dir: /code
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- ./code:/code
- ./php/php.ini:/usr/local/etc/php/php.ini
network_mode: "host"
- php鏡像的Dockerfile文件
FROM php:7.1-fpm
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring pdo pdo_mysql pdo_pgsql zip
CMD ["php-fpm"]