php - 在Dockerfile中安装使用OpenSSL和zlib编译的cURL

标签 php apache curl docker debian

我需要通过Dockerfile为Apache和php 5.6的Debian镜像安装使用OpenSSL和zlib编译的cURL。我尝试了许多方法,但是由于我对Linux没有足够的了解,因此失败了。我使用docker-compose来建立我的容器。 docker-compose.yaml看起来像:

version: '2'
services:
  web:
    build: .
    command: php -S 0.0.0.0:80 -t /var/www/html/
    ports:
      - "80:80"
    depends_on:
      - db
    volumes:
      - $PWD/www/project:/var/www/html
    container_name: "project-web-server"
  db:  
    image: mysql:latest
    ports:
      - "192.168.99.100:3306:3306"
    container_name: "project-db"
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: dbpass
      MYSQL_ROOT_PASSWORD: dbpass

作为构建脚本,我使用Dockerfile:
FROM php:5-fpm

RUN apt-get update && apt-get install -y \ 
    apt-utils \
    curl libcurl3 libcurl3-dev php5-curl php5-mcrypt
RUN docker-php-ext-install -j$(nproc) curl

'docker-php-ext-install'是来自基础镜像https://hub.docker.com/_/php/的帮助脚本

问题是在$ docker build --rm .成功之后,请不要使用cURL + SSL + zlib获取图像。在$ docker-compose up之后,我有一个使用Apache + MySQL的工作容器,可以运行我的项目,但是我需要的库不在那里。

您能否解释一下如何将这些扩展名正确添加到容器中的apache中?我什至尝试创建自己的Dockerfile并在那里构建apache + php +所需的库,但是没有结果。

最佳答案

您的Dockerfile不完整。您尚未执行COPY(或类似操作)将源代码执行的代码从主机执行到容器中。 Dockerfile的目的是与您的源代码一起设置环境,该环境通过启动进程(通常是服务器)来完成。

COPY code-from-some-location  into-location-in-container

CMD path-to-your-server

...按照您引用的URL,这样会出现一个更完整的Dockerfile
FROM php:5.6-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./your-script.php" ]

请注意COPY,它会以递归方式复制$ PWD中的所有文件/目录(通常是源代码的位置,如数据和/或配置文件的位置),在其中您将命令执行到容器内部的指定位置。在中。指示当前目录,因此上面的命令
COPY . /usr/src/myapp

将从主机(当前输入docker build命令时使用的主机)中当前目录中的所有文件和目录复制到名为/ usr / src / myapp的容器目录中

WORKDIR的作用是将目录更改为您提供的容器的目录

最终,CMD启动服务器,一旦启动容器,它就会嗡嗡作响

关于php - 在Dockerfile中安装使用OpenSSL和zlib编译的cURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995599/

相关文章:

php - codeigniter 加载一个模型,该模型具有带参数的构造函数

来自 CI 结果对象的 PHP 访问对象属性

php - 使用 EOF 的缺点?

mysql - 变量 time_zone 不能设置为 NULL 的值

php - 使用 SFTP 和 cURL 获取文件

opencv - 如何互动并从相机获取直播

php 匹配任何/匹配任何等效运算符

linux - 有人可以向初学者提供有关 Hadoop 工作原理的高级、简单的解释吗?

php - 成功更改 apache 服务器的端口后,我的项目没有打开。我可以使用新端口号访问管理面板

curl - Windows的cURL:如何在控制台中发送多行命令?