как запустить команду mkdir с томами в докере? - PullRequest
0 голосов
/ 11 октября 2018

Пожалуйста, помогите мне !!!

Я не могу понять логику этого. У меня есть файл dockerfile следующим образом.

FROM php:fpm

RUN touch /var/www/html/foo.php

это мой файл композиции:

version: '3'

services:
web:
container_name: phpx
build : .
ports:
- "80:80"
volumes:
  - ./code:/var/www/html

Я никогда не вижу foo.php в моем каталоге с именем code.Как я могу увидеть foo.php?

в чем логика?Когда я удаляю параметр 'volume', он создается в контейнере, но мой каталог кодов не видит. Потому что он не синхронный.

Как мне написать код в файле dockerfile?

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Для создания каталога вы можете использовать

FROM php:fpm

RUN mkdir -p /var/www/html/
RUN touch /var/www/html/foo.php

или

FROM php:fpm

WORKDIR /var/www/html/
RUN touch /var/www/html/foo.php

Теперь давайте создадим образ как

docker build -t phpx .

Теперь работаем так:

docker run -it phpx /bin/sh

Теперь вы можете найти местоположение файла /var/www/html/foo.php.

Если вы попытаетесь смонтировать пустой каталог, который в нашем случае code, он удалит все в mounted directory.

docker run -it -v full_host_path/code:/var/www/html phpx /bin/sh

Возможное решение вашей проблемы - поместить foo.php в code и смонтировать code dir.

0 голосов
/ 12 октября 2018

Я попробовал то, что вы сказали, но все еще не могу получить результат. Я все еще не могу увидеть файл foo.php в папке с кодом на хосте. Я не узнал, где я делал неправильно.

0 голосов
/ 11 октября 2018

Вот то, на что вы можете посмотреть.В вашем Dockerfile вы должны предоставить пользователю разрешение на доступ к местоположению в контейнере.Именно поэтому файл не создавался.

FROM php:fpm  
RUN chown $user --recursive /var/www/html && touch /var/www/html/foo.php

Я внес эти изменения и смог получить файл на своем хосте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...