【问题标题】:Phalcon Installation In Docker在 Docker 中安装 Phalcon
【发布时间】:2018-12-24 14:05:22
【问题描述】:

我正在尝试在 docker 中安装 phalcon,但我不知道该怎么做。

我正在网上搜索解决方案,但无法成功。

我成功安装了 docker for windows,它似乎工作正常,但我找不到安装 docker 的方法。

谁能帮我在 docker 中安装 phalcon 吗?

提前致谢

【问题讨论】:

    标签: windows docker installation phalcon


    【解决方案1】:

    您可以创建一个为您编译 Phalcon 的 Dockerfile:

    FROM php:7.2-fpm
    
    ENV PHALCON_VERSION=3.4.2
    
    RUN curl -sSL "https://codeload.github.com/phalcon/cphalcon/tar.gz/v${PHALCON_VERSION}" | tar -xz \
        && cd cphalcon-${PHALCON_VERSION}/build \
        && ./install \
        && cp ../tests/_ci/phalcon.ini $(php-config --configure-options | grep -o "with-config-file-scan-dir=\([^ ]*\)" | awk -F'=' '{print $2}') \
        && cd ../../ \
        && rm -r cphalcon-${PHALCON_VERSION}
    

    【讨论】:

      【解决方案2】:

      如果您正在寻找带有 phalcon 3.4.2 的 php7+apache+mysql,那么这是我的解决方案。对于 phalcon 4,需要完成诸如安装 psr 之类的附加步骤,否则它将为所需的依赖项提供错误。 考虑以下结构并相应地放置文件

      docker-compose.yml

      www(存放代码的目录)

      index.php

      .docker(目录)

      Dockerfile

      转储(仅用于保存您的 mysql 数据的目录)

      这里是 Dockerfile,你将把它放在 .docker 目录中

      FROM php:7.1.2-apache 
      RUN docker-php-ext-install pdo_mysql
      RUN sed -i '/jessie-updates/d' /etc/apt/sources.list # Now archived
      RUN apt update
      
      RUN apt install -y \ 
          apt-transport-https \ 
          lsb-release \ 
          ca-certificates \ 
          wget \ 
          curl \ 
          nano \ 
          dialog \ 
          net-tools \
          git \
          sudo \
          openssl \
          libpcre3-dev
      
      RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
      RUN sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
      
      RUN apt update && apt install -y \
          php7.1-curl \
          php7.1-mbstring \
          php7.1-gettext \
          php7.1-gd \
          php7.1-fileinfo \
          php7.1-json \
          php7.1-mcrypt \
          php7.1-redis \
          php7.1-intl \
          php7.1-xml \
          php7.1-zip
      ARG PHALCON_VERSION=3.4.2
      ARG PHALCON_EXT_PATH=php7/64bits
      RUN set -xe && \
              # Compile Phalcon
              curl -LO https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.tar.gz && \
              tar xzf ${PWD}/v${PHALCON_VERSION}.tar.gz && \
              docker-php-ext-install -j $(getconf _NPROCESSORS_ONLN) ${PWD}/cphalcon-${PHALCON_VERSION}/build/${PHALCON_EXT_PATH} && \
              # Remove all temp files
              rm -r \
                  ${PWD}/v${PHALCON_VERSION}.tar.gz \
                  ${PWD}/cphalcon-${PHALCON_VERSION}
      RUN a2enmod rewrite
      

      这将为您提供 php 和 phalcon 设置以及 apache 你可以使用 docker compose 来运行你所有需要的容器来组成你的应用程序 这是你的 docker-compose 文件

      version: "2"
      services:
          www:
              build: ./.docker
              ports: 
                  - "8001:80"
              volumes:
                  - ./www:/var/www/html/
              links:
                  - db
              networks:
                  - default
          db:
              image: mysql:5.7.13
              ports: 
                  - "3306:3306"
              environment:
                  MYSQL_DATABASE: myDb
                  MYSQL_USER: user
                  MYSQL_PASSWORD: test
                  MYSQL_ROOT_PASSWORD: test
              volumes:
                  - ./dump:/var/lib/mysql
          phpmyadmin:
              image: phpmyadmin/phpmyadmin
              links: 
                  - db:db
              ports:
                  - 8000:80
              environment:
                  MYSQL_USER: user
                  MYSQL_PASSWORD: test
                  MYSQL_ROOT_PASSWORD: test
      

      在此之后只需在 www 中添加 index.php

      <?php echo phpinfo();?>
      

      在此 localhost:8001 之后应该可以访问.. 快乐编码。以及是否需要对此进行任何改进。请告诉我。到目前为止,这对我和我的第一个 phalcon 配置来说非常酷。浪费了很多时间.....

      【讨论】:

      • 哇,这真的有效!你应该把它放在一个github中。非常感谢!
      【解决方案3】:

      你可以通过 Dockerfile 安装它 请根据您的操作系统获取此链接 https://github.com/phalcon/dockerfiles

      另外你可以通过 repo 来实现 https://hub.docker.com/u/phalconphp

      【讨论】:

        【解决方案4】:

        对于 phalcon,在相同的硬件/cpu 上编译很重要。或者你将标志传递给

         phpize \
            && ./configure CFLAGS="-O2 -g" \
            && make -B \
            && make install
        

        【讨论】:

          【解决方案5】:

          不确定是否仍然相关,但在这里 https://keepforyourself.com/coding/php/how-to-setup-phalcon-framework-in-a-docker-container-v2/ 有这个解决方案

          FROM alpine:latest
          RUN apk add --no-cache \
              apache2-proxy \
              apache2-ssl \
              apache2-utils \
              curl \
              git \
              logrotate \
              openssl \
              git bash php php7-dev apache2 gcc \
              libc-dev make php7-pdo php7-json \
              php7-session php7-pecl-psr \
              php7-apache2
          WORKDIR /
          RUN git clone --depth=1 "git://github.com/phalcon/cphalcon.git"
          WORKDIR /cphalcon/build
          RUN ./install
          RUN echo "extension=phalcon.so" > /etc/php7/conf.d/phalcon.ini
          
          RUN apk del libc-dev zlib-dev php7-dev libedit-dev musl-dev pcre2-dev         ncurses-dev \
              expat xz-libs curl musl-utils make libedit zlib ncurses-libs libstdc++ pcre git bash musl argon2-libs
          ENV APACHE_RUN_USER www-data
          ENV APACHE_RUN_GROUP www-data
          ENV APACHE_LOG_DIR /var/log/apache2
          
          RUN rm -rf /cphalcon
          
          WORKDIR /var/www/localhost/htdocs
          RUN echo "<?php phpinfo(); ?>" >  /var/www/localhost/htdocs/index.php
          
          EXPOSE 80
          
          CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
          

          【讨论】:

            猜你喜欢
            • 2017-08-16
            • 2015-02-07
            • 1970-01-01
            • 2021-03-02
            • 2019-03-27
            • 2014-06-07
            • 2022-08-24
            • 2012-12-11
            • 2012-09-02
            相关资源
            最近更新 更多