我正在尝试为TYPO3创建一个docker环境。到目前为止,我正在使用apache webserver创建一个应用程序容器。但是容器始终以状态0停止。是否有提示? 我的docker-compose:
version: '3'
services:
app:
build: ./docker/app/
volumes:
- ./app:/app
ports:
- 8080:80
- 8443:443
environment:
- SERVER_NAME=local.typo3.com
db:
image: mysql
build: ./docker/db/
restart: always
ports:
- "3307:3306"
environment:
- MYSQL_ROOT_PASSWORD="root"
- MYSQL_ROOT_USER="root"
Dockerfile看起来像这样:
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update; \
apt-get -y upgrade; \
echo "Europe/Berlin" > /etc/timezone; \
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime;
#Install apache
RUN apt-get update && \
apt-get -y install apache2;
RUN apt-get update;
#Install php
RUN apt-get -y install php7.2 \
php7.2-soap \
php7.2-mysql \
php7.2-xml \
php7.2-cli \
php7.2-json \
php7.2-ldap \
php-curl;
RUN apt-get install -y --no-install-recommends mysql-client;
COPY resources/000-default.conf /etc/apache2/sites-available/
RUN a2ensite 00-default;
CMD ["service apache2 restart"]
任何帮助将不胜感激。
答案 0 :(得分:0)
正如David Maze指出的那样,这在大多数容器化环境中根本行不通:
CMD ["service apache2 restart"]
根据环境,这将执行以下两项操作之一:
它可能尝试与systemd
联系,因为您尚未启动service
,所以它没有运行。您不想启动它!在容器内运行流程管理器通常是一种反模式。
它将在后台启动Apache。发生这种情况时,从Docker的角度来看,主进程已经退出,因此容器退出了。这可能是您正在发生的事情。
您应该手动启动Apache ,而不是使用httpd -DFOREGROUND
命令,例如通过运行:
x
或者按照建议,在已经具有必要功能的现有映像之上构建应用程序。