【发布时间】:2017-06-20 01:18:27
【问题描述】:
我正在开发 PyroCMS 的 Docker 版本。这是repository 我拥有的最新文件。如您所见,我正在运行一个堆栈:CentOS 7(带有 Supervisord)、MySQL、Apache 和 PHP。这是docker-compose.yml 文件:
version: '2.1'
services:
httpd:
build: docker/httpd
ports:
- "8080:80"
volumes_from:
- php-fpm
php-fpm:
build:
context: docker/php-fpm
args:
INSTALL_XDEBUG: "false"
INSTALL_MONGO: "false"
INSTALL_REDIS: "false"
INSTALL_HTTP_REQUEST: "false"
INSTALL_UPLOAD_PROGRESS: "false"
INSTALL_XATTR: "false"
depends_on:
db:
condition: service_healthy
db:
image: mysql
healthcheck:
test: "exit 0"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
这是httpd 图像的Dockerfile:
FROM reynierpm/centos7-supervisor
RUN yum install -y httpd nano && \
yum clean all && rm -rf /tmp/yum*
RUN rm -f /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/* /etc/httpd/conf.modules.d/*
COPY container-files /
EXPOSE 80
我遇到了一个问题,因为httpd 容器以状态 1 退出并看到我得到以下日志:
httpd_1 | httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: No such file or directory
乍一看你会说:
你正在删除文件!!!在这一行RUN rm -f /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/* /etc/httpd/conf.modules.d/*
你是对的,但是如果你仔细观察你会发现我正在将它复制回来(因为我正在运行一个最小的 Apache 配置):
COPY container-files /
我不确定为什么找不到文件以及为什么容器停止并退出,任何人都可以看看这个并让我知道我在哪里犯了错误,如果有的话?
【问题讨论】:
-
我会启动一个带有“httpd”服务容器的新容器实例的 bash shell,并手动调查目录。您可能会发现
COPY命令没有将配置文件放置在您期望的位置。为此:docker-compose run --rm httpd bash。我假设 centos 映像已安装 bash。 -
检查显示
docker run -it httpd bash和 ls 以检查您的文件是否存在
标签: docker docker-compose dockerfile