【发布时间】:2016-11-28 23:31:24
【问题描述】:
我有一个基于 php:5.5.36-apache 映像的 docker 文件,用于专门为开发创建映像。我的 Dockerfile 安装了 memcached,但我没有运气让 memcached 在启动时启动。如果我 ssh 进入容器并手动启动 memcached,它就可以正常启动。
FROM php:5.5.36-apache
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
default-jdk
RUN apt-get install -y --no-install-recommends autoconf
RUN apt-get install -y --no-install-recommends python python-pip
RUN apt-get update && apt-get install -y libmemcached-dev \
apt-utils re2c g++ memcached \
zlib1g zlib1g-dbg zlib1g-dev zlibc mysql-client php5-mysql \
&& pecl install memcached \
&& docker-php-ext-enable memcached\
&& pecl install memcache \
&& docker-php-ext-enable memcache
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get install -y gettext
RUN pip install hgapi
RUN a2enmod headers \
&& a2enmod rewrite
COPY ./apache2.conf /etc/apache2/apache2.conf
RUN mkdir /var/www/content
EXPOSE 11211
RUN systemctl enable memcached.service
基础镜像基于 debian:jessie
【问题讨论】:
-
你误用了 RUN。 RUN 帮助你安装和配置你需要的软件,ADD/COPY 添加文件,ENV 定义你的环境变量,CMD 和 ENTRYPOINT 启动你的东西,所以它们在 Mysql docker 镜像中启动 mysqld,在 Apache docker 镜像中启动 apache 等等。我在您的 Dockerfile 中没有看到 CMD 或 ENTRYPOINT。检查文档 docs.docker.com/engine/reference/builder/#/cmd 和 docs.docker.com/engine/reference/builder/#/entrypoint
-
我开始的图像有一个启动 apache 的 CMD,这确实是让我感到困惑的部分。请看下面我的回答,我现在好多了。
标签: php docker debian memcached boot