1. 安装docker,推荐win10专业版系统,win7系统安装使用docker
2. 从官方仓库下载镜像(推荐下载以alpine为基础的镜像)
docker pull mysql:5.7
docker pull php:5.6.38
docker pull nginx:1.15.5
3. 初始化容器
docker run -dit -p 3306:3306 -e MYSQL_ROOT_PASSWORD=docker123 --name mysql57 mysql:5.7
docker run -dit -v E:/WWW:/home/wwwroot -p 9000:9000 --name php56 php:5.6.38-fpm
docker run -dit -p 80:80 -v E:/WWW:/home/wwwroot --name nginx15 nginx:1.15.5
4. 为php容器安装扩展
- 首先进入容器:
docker exec -it php5.6 /bin/bash
- 安装相关扩展:
docker-php-ext-install mysqli
(mysql,gd,curl,...) - 安装镜像中非自带的扩展如(redis,memcached...),去下载扩展源码拷贝到/usr/src/php/ext/目录(如果目录不存在,执行
docker-php-source extract
)下并重命名为redis,docker-php-ext-install redis
安装扩展,重启容器。
5. 常用命令
- docker-machine ssh default 进入docker默认主机(win7)
- docker run -d 让容器在后台运行 -p 添加主机到容器的端口映射 -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的 –name 容器的名字 –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。
- docker exec -it 容器ID或容器名 /bin/bash 进入容器
- docker stop/start/restart/kill 容器ID或容器名
- docker inspect 容器ID或容器名 | grep IPAddress 获得容器IP
6. 常见问题
- gd库缺少pnd,jpeg,webp...
- debian容器(执行以下两条命令):
apt install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libfreetype6-dev
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
- alpine容器(执行以下两条命令):
apk add --no-cache freetype-dev libjpeg-turbo-dev libpng-dev libwebp-dev
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr
- 最后执行
docker-php-ext-install gd
,重启容器。
- 容器中的时间不是北京时间
- cd /etc/目录下查看是否存在localtime,如存在删除,执行:
ln -s /usr/share/zoneinfo/Asia/Shanghai localtime
echo "Asia/Shanghai" > /etc/timezone
,重启容器。
- 如果/usr/share/zoneinfo/Asia/Shanghai不存在,安装装tzdata。
转载于:https://my.oschina.net/CodeLivestock/blog/2254762