gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:23:30 26 4
gpt4 key购买 nike

我需要通过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/

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