2016-03-14 1 views
1

Мне нужно установить cURL, скомпилированный с OpenSSL и zlib через Dockerfile для изображения Debian с apache и php 5.6. Я пробовал много подходов, но из-за того, что у меня нет понимания строк в Linux, не удалось. Я использую docker-compose для моего контейнера. докер-compose.yaml выглядит следующим образом:Установить cURL, скомпилированный с OpenSSL и zlib в файле Docker

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 

'Докер-PHP-вн-установки' является вспомогательным скрипт из базового изображения https://hub.docker.com/_/php/

Проблема в том, что после , который является успешным, не получите изображение с помощью cURL + SSL + zlib. После $ docker-compose up У меня есть рабочий контейнер с Apache + MySQL и я могу запустить свой проект, но библиотеки мне не нужны.

Не могли бы вы объяснить, как правильно добавить эти расширения в мой apache в контейнере? Я даже пытался создать свой собственный файл Docker и создавать там apache + php + необходимые библиотеки, но не имел результата.

ответ

0

Ваш файл Docker не завершен. Вы не выполнили КОПИРОВАНИЕ (или подобное), чтобы передать исходный код для выполнения с хоста в контейнер. Точка 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, где вы выполняете команду в указанное место, внутреннее для контейнера. В unix период, как и в. указывает на текущий каталог, так выше команды

COPY . /usr/src/myapp 

будет копировать все файлы и директории в текущей директории с хост-компьютера (тот, который вы используете при вводе команды Докер сборки) в каталог контейнера под названием/USR/SRC/MYAPP

WORKDIR действует, чтобы изменить каталоги в директории вашего контейнера поставляется

наконец CMD запускает сервер, который гудит вместе когда-то ваш запуск контейнеру

+0

спасибо. Я прочитал ссылку на COPY в Dockerfile и до сих пор не понимаю, что мне нужно скопировать. Я имею в виду, что я отображаю объемы в файле docker-compose.yaml. Когда контейнеры запускают сервер из «project-web-server», контейнер работает с моими локальными файлами проекта. Но cURL с SSL и zlib не являются расширениями apache в отношении phpinfo и ошибок кода из моих сценариев. –

+0

a Dockerfile - это всего лишь серия команд, которые выполняются для создания вашего изображения докеров. Вам нужно использовать команду COPY для передачи файлов локальных проектов в контейнер, что и есть COPY./some/path/inside/container делает .... Я предлагаю вам сначала начать работу с более простым контейнером докеров ... помните только ОДИН процесс на контейнер –

Смежные вопросы