Swartex
@Swartex
Многорукий могоног

Что не так с Docker?

Есть
Dockerfile
# Для начала указываем исходный образ, он будет использован как основа
FROM php:7.2-fpm
# Необязательная строка с указанием автора образа
MAINTAINER Swartex

# RUN выполняет идущую за ней команду в контексте нашего образа.
# В данном случае мы установим некоторые зависимости и модули PHP.
# Для установки модулей используем команду docker-php-ext-install.
# На каждый RUN создается новый слой в образе, поэтому рекомендуется объединять команды.
RUN apt-get update && apt-get install -y \
        curl \
        wget \
        git \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
    && docker-php-ext-install -j$(nproc) iconv mbstring zip \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd
# Куда же без composer'а.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Добавим свой php.ini, можем в нем определять свои значения конфига
ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini

# Указываем рабочую директорию для PHP
WORKDIR /var/www/

# Запускаем контейнер
# Из документации: The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable, 
# or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
CMD ["php-fpm"]



И файл
docker-compose.yml
# Версия docker-compose
version: '2'
# Список наших сервисов (контейнеров)
services:
    nginx:
        # используем последний стабильный образ nginx
        image: nginx:latest
        # маршрутизируем порты
        ports:
            - "80:80"
            - "443:443"
        # монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере
        volumes:
            - ./hosts:/etc/nginx/conf.d
            - ./www:/var/www
            - ./logs:/var/log/nginx
        # nginx должен общаться с php контейнером
        links:
            - php
    php:
        # у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
        build: ./images/php
        # этот образ будет общаться с mysql
        links:
            - mysql
        # монтируем директорию с проектами
        volumes:
            - ./www:/var/www
    mysql:
        image: mariadb
        environment:<code></code>
            MYSQL_ROOT_PASSWORD: example
        ports:
            - "3306:3306"
        volumes:
            - ./mysql:/var/lib/mysql
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        environment:
            PMA_ARBITRARY: 1
            MYSQL_USER: homestead
            MYSQL_PASSWORD: secret
            MYSQL_ROOT_PASSWORD: root
        ports:
            - "8080:80"
        links:
            - "mysql:mysql"



при запуске контейнеров выдает ошибку:
$ docker-compose up -d
Removing webdev_mysql_1
Recreating e0e98f2b1646_webdev_mysql_1 ... error

ERROR: for e0e98f2b1646_webdev_mysql_1  b'no such image: sha256:2dd01afbe8df1fe326f6609c56b08beefc6bf254d28993263da188b8fbf1254d: No such image: sha256:2dd01afbe8df1fe326f6609c56b08beefc6bf254d28993263da188b8fbf1254d'

ERROR: for mysql  b'no such image: sha256:2dd01afbe8df1fe326f6609c56b08beefc6bf254d28993263da188b8fbf1254d: No such image: sha256:2dd01afbe8df1fe326f6609c56b08beefc6bf254d28993263da188b8fbf1254d'
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

Recreating e0e98f2b1646_webdev_mysql_1 ... error
Recreating e0e98f2b1646_webdev_mysql_1 ...

ERROR: for e0e98f2b1646_webdev_mysql_1  Cannot start service mysql: b"error while creating mount source path '/host_mnt/e/webdev/mysql': mkdir /host_mnt/e: file exists"

ERROR: for mysql  Cannot start service mysql: b"error while creating mount source path '/host_mnt/e/webdev/mysql': mkdir /host_mnt/e: file exists"
ERROR: Encountered errors while bringing up the project.

Структура папок такая:
5beb46e09bcd2142118320.png
Как пример использовал статью https://phptoday.ru/post/gotovim-lokalnuyu-sredu-d...

Вот что я делаю не так?)
  • Вопрос задан
  • 4011 просмотров
Пригласить эксперта
Ответы на вопрос 1
@metajiji
Дело не в Dockerfile, а в docker-compose
А а именно, у вас судя по всему windows, и проблема с пробросом маунтов и в целостности имейджей. Попробуйте вайпнуть докер и запустите с чистого листа:)

ERROR: for mysql Cannot start service mysql: b"error while creating mount source path '/host_mnt/e/webdev/mysql': mkdir /host_mnt/e: file exists"

Проброс с хоста (windows) внутрь виртуальной машины с Линукс поломатый. Пересоздайте вм и будет счастье.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы