docker部署php开发环境

Nginx

1. 创建nginx容器
1
2
3
4
5
6
7
$ pwd
/Volumes/workspace/docker/php-environment
$ docker run --name test-nginx -d -p 8080:80 nginx:1.17.2-alpine
8b935e77ebc3710e92419efe7bcf266895088435a6a98918eea655a487ff8dee
$ docker ps -a;
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b935e77ebc3 nginx:1.17.2-alpine "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp test-nginx
2. 复制nginx配置文件
1
2
$ docker cp 8b935e77ebc3:/etc/nginx/nginx.conf ./
$ docker cp 8b935e77ebc3:/etc/nginx/conf.d/ .
3. 删除nginx容器
1
$ docker rm -f 8b935e77ebc3

PHP5.6

1. 编写Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
FROM php:5.6-fpm

ENV TZ=Asia/Shanghai

RUN cp "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"


# 更新为国内镜像
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \
&& echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list \
&& apt-get update

RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysql mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm

RUN apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

# 安装redis
RUN pecl install redis-4.0.1 && docker-php-ext-enable redis

# 安装memcache
RUN pecl install memcache-2.2.7 && docker-php-ext-enable memcache

# 安装memcached
RUN apt-get install -y libmemcached-dev zlib1g-dev \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached

# 安装mongodb
RUN pecl install mongodb && docker-php-ext-enable mongodb

RUN apt-get update
# 安装imagick
# RUN apt-get install ImageMagick && pecl install imagick && docker-php-ext-enable imagick
RUN apt-get install -y libmagickwand-dev --no-install-recommends && pecl install imagick && docker-php-ext-enable imagick

# 安装gmagick
# RUN apt-get install -y libgraphicsmagick1-dev && pecl install gmagick-1.1.7RC3 && docker-php-ext-enable gmagick

# 安装xdebug
RUN pecl install xdebug-2.5.5 && docker-php-ext-enable xdebug;

# 镜像信息
LABEL Author="ZYJ"
LABEL Version="2019.9"
LABEL Description="PHP 5.6开发环境镜像."

PHP7.3.8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
FROM php:7.3.8-fpm

ENV TZ=Asia/Shanghai

RUN cp "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

RUN apt-get update
# 更新为国内镜像
# RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \
# && echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list \
# && echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list \
# && echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list \
# && apt-get update

RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm


RUN apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

# 安装redis
RUN pecl install redis && docker-php-ext-enable redis


# 安装memcached
# RUN apt-get install -y --allow-downgrades libsasl2-2=2.1.27~101-g0780600+dfsg-3
RUN apt-get install -y libsasl2-dev libmemcached-dev zlib1g-dev \
&& pecl install memcached \
&& docker-php-ext-enable memcached

# 安装mongodb
RUN pecl install mongodb && docker-php-ext-enable mongodb

# 安装imagick
# RUN apt-get install ImageMagick && pecl install imagick && docker-php-ext-enable imagick
RUN apt-get install -y libmagickwand-dev --no-install-recommends && pecl install imagick && docker-php-ext-enable imagick

# 安装gmagick
# RUN apt-get install -y libgraphicsmagick1-dev && pecl install gmagick-1.1.7RC3 && docker-php-ext-enable gmagick

# 安装xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug

# swoole 扩展
RUN pecl install swoole-4.4.0 && docker-php-ext-enable swoole

# 镜像信息
LABEL Author="ZYJ"
LABEL Version="2019.9"
LABEL Description="PHP 7.3开发环境镜像."

使用docker-compose编排容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
version: "3"
services:
nginx:
image: nginx:1.17.2-alpine
restart: always
ports:
- "80:80"
links:
- mysql
- php
volumes:
- /Volumes/workspace/php/:/web
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/log:/var/log/nginx
environment:
- TZ=Asia/Shanghai
mysql:
image: mysql:5.7.25
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
ports:
- "3306:3306"
volumes:
- ./mysql/mysql5725/conf:/etc/mysql/conf.d
- ./mysql/mysql5725/data:/var/lib/mysql
- ./mysql/mysql5725/log:/var/log/mysql

php:
image: zyj-php56
restart: always
privileged: true
environment:
- TZ=Asia/Shanghai
links:
- mysql
volumes:
- ./php/php56/etc:/usr/local/etc/php
- /Volumes/workspace/php/:/web

使用方法

1. 切换到docker-compose.yml文件所在目录
1
2
$ pwd
/Volumes/workspace/docker/php-environment
2. 启动
1
docker-compose up -d;
3. 停止
1
docker-compose down;
4. 重启
1
docker-compose restart;