gpt4 book ai didi

laravel - Laravel docker :adsist-docker_app_1以代码1退出

转载 作者:行者123 更新时间:2023-12-02 19:24:06 25 4
gpt4 key购买 nike

我试图建立一个Laravel项目。

设置是:

  • Centos
  • Apache
  • MySql

  • 我为App,Web,数据库拆分了容器

    和应用程序容器无法运行:(

    这是我的 docker-compose.yml:
    version: '2'
    services:

    # The Application
    app:
    build:
    context: ./
    dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
    - ./:/var/www
    environment:
    - "DB_PORT=3306"
    - "DB_HOST=database"

    # The Web Server
    web:
    build:
    context: ./
    dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
    - app
    ports:
    - 8080:80

    # The Database
    database:
    image: mysql:5.6
    volumes:
    - dbdata:/var/lib/mysql
    environment:
    - "MYSQL_DATABASE=homestead"
    - "MYSQL_USER=homestead"
    - "MYSQL_PASSWORD=secret"
    - "MYSQL_ROOT_PASSWORD=secret"
    ports:
    - "33061:3306"

    volumes:
    dbdata:

    这是我的app.dockerfile
    FROM centos:7.5.1804

    RUN yum update -y

    RUN yum install epel-release http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-utils -y && \
    yum-config-manager --enable remi-php72 && \
    yum update -y

    RUN yum install vim wget curl unzip \
    php php-json php-gd php-mbstring php-pdo php-xml php-mysqlnd -y

    RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
    rm -rf composer-setup.php

    RUN curl -sL https://rpm.nodesource.com/setup_8.x | bash - && \
    yum install nodejs -y

    RUN yum clean all

    EXPOSE 80

    # Keep container active
    CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

    这是我的web.dockerfile:
    FROM httpd:2.4

    COPY httpd.conf /etc/httpd/conf/httpd.conf

    当我运行 docker-compose up时,显示一些消息:

    app_1 | AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf: app_1 | DocumentRoot '/var/www/html' is not a directory, or is not readable

    adsist-docker_app_1 exited with code 1

    最佳答案

    设置为apache documentroot的/var/www/html在大多数linux发行版中都很流行,但是httpd docker镜像中不是这样。另外,即使您将http.conf修改为使用/var/www/html,您仍然应该挂载到/var/www/html,而不是/var/www

    回到httpd图片,您可以看到下一个:

    $ docker run -idt httpd:2.4
    docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    182c63e24082 httpd:2.4 "httpd-foreground" 3 seconds ago Up 1 second 80/tcp clever_bassi
    $ docker exec -it clever_bassi /bin/bash
    root@182c63e24082:/usr/local/apache2/conf# cat httpd.conf
    ......
    DocumentRoot "/usr/local/apache2/htdocs"
    ......

    因此,如果不更改默认设置,则应将主机的文件挂载到 /usr/local/apache2/htdocs上以提供服务。

    而且,您的 COPY httpd.conf /etc/httpd/conf/httpd.conf中的 Dockerfile也不正确,应该是 COPY httpd.conf /usr/local/apache2/conf/httpd.conf

    关于laravel - Laravel docker :adsist-docker_app_1以代码1退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57566223/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com