跳转到内容


Debian 8.5 jessie 制作 php 5.6 docker 镜像并使用 docker-compose 管理

Debian php docker

  • 您无法回复此主题
No replies to this topic

#1 冰力

    Administrator

  • 总版主
  • 1308 帖子数:

发表于 2018/01/07 18:50:53

首先创建目录 jessie-php:
mkdir jessie-php

编辑 docker 配置文件
vim jessie-php/Dockerfile

配置文件内容:
FROM debian:jessie

ADD sources.list /etc/apt/

RUN apt update && apt install -y \
		php5-fpm \
		php5-curl \
		php5-mysqlnd \
		php5-gd \
		php5-mcrypt \
		php5-memcache \
		php5-imagick \
		php5-json \
		php5-apcu \
		curl \
		--no-install-recommends && rm -r /var/lib/apt/lists/*


RUN sed -i '/^listen /c \
listen = 0.0.0.0:9000' /etc/php5/fpm/pool.d/www.conf

RUN sed -i 's/^listen.allowed_clients/;listen.allowed_clients/' /etc/php5/fpm/pool.d/www.conf

RUN sed -i 's/;daemonize = yes/daemonize = no/g' /etc/php5/fpm/php-fpm.conf

EXPOSE 9000

VOLUME /data/www

ENTRYPOINT ["/usr/sbin/php5-fpm"]

生成镜像:
docker build -t debian-jessie-php jessie-php/

运行 docker 试试看:
docker run -v /data/www:/data/www:rw -p 9005:9000 jessie-php

一切 OK 没问题,那我们可以让这个 docker 服务形式运行了:
docker run -v /data/www:/data/www:rw -p 9005:9000 --restart always -d jessie-php

方便管理使用 docker-compose 来进行管理,创建配置文件:
touch docker-compose.yml

docker-compose.yml 内容:
php:
	    image: jessie-php
	    volumes:
			    - /data/www:/data/www:rw
	    ports:
			    - 9005:9000

启动:
docker-compose up -d

后面的 -d 参数就是服务化。

在本机 ngxin 配置一下站点即可把端口代理到 9005,使用 9005 是避免和本机其他 9000 端口冲突而已:
vim /etc/nginx/site-enabled/mysite

站点配置:
server {
	listen 80;
	listen [::]:80;

	root /data/www/mysite/htdocs;

	index index.html index.htm index.php;

	server_name itbbs.cn www.itbbs.cn;

	error_log /data/logs/nginx/itbbs.error.log;
	access_log /data/logs/nginx/itbbs.access.log;

	location ~ \.php {
			try_files $uri = 404;
			include fastcgi_params;
			fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
			fastcgi_param SCRIPT_NAME $fastcgi_script_name;
			fastcgi_index index.php;
			fastcgi_pass 127.0.0.1:9005;
	}
}