docker файл с командой запуска не выполняется - PullRequest
0 голосов
/ 23 января 2020

У меня есть docker -композитный файл, как показано ниже, и файл приложения. docker для php. Когда я запускаю это на своем ноутбуке, все работает нормально.

Когда я запускаю это на своем главном P C, команда RUN в приложении. docker файл не запускается. Мне нужно CLI на экземпляр php и запустить его вручную.

Есть идеи, почему?

docker -compose.yml

version: '2'

services:
    nginx:
      image: nginx:1.13.12
      ports:
        - "8443:443"
        - "8080:80"
      volumes:
        - ./:/var/www
        - ./docker/nginxconf:/etc/nginx/conf.d
        - ./docker/ssl-cert:/etc/nginx/certs
      working_dir: /var/www
      links:
        - php
    php:
        build:
            context: ./
            dockerfile: docker/app.docker
        volumes:
            - ./:/var/www
        depends_on:
          - db
        links:
            - db
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=db"
    db:
        image: mariadb
        environment:
            - "MYSQL_ROOT_PASSWORD=secret"
            - "MYSQL_DATABASE=dockerApp"
        ports:
            - "33061:3306"

app . docker

FROM php:7-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev mariadb-client libmcrypt4 \
    && docker-php-ext-install pdo_mysql \
    && kill -USR2 1

WORKDIR /var/www

1 Ответ

1 голос
/ 23 января 2020

Docker кэширует «слои» для повторного их сохранения.

RUN - это одна из команд Dockerfile, которая генерирует слои, поэтому Docker Движок будет кэшировать этот слой и, следовательно, не RUN команда, если она существует и не изменилась.

Я скопировал ваш Dockerfile и собрал его дважды. Вот второй прогон:

docker build --rm --file=./Dockerfile --tag=59886068:latest .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM php:7-fpm
 ---> fa37bd6db22a
Step 2/3 : RUN apt-get update && apt-get install -y libmcrypt-dev mariadb-client libmcrypt4     && docker-php-ext-install pdo_mysql     && kill -USR2 1
 ---> Using cache
 ---> c76aaadf8680
Step 3/3 : WORKDIR /var/www
 ---> Using cache
 ---> fc0287d8edb2
Successfully built fc0287d8edb2
Successfully tagged 59886068:latest

NB Шаг # 2 равен Using cache во 2-м билде для (в моем случае) c76aaadf8680.

Вы можете увидеть это, используя:

docker image history 59886068:latest

IMAGE               CREATED             CREATED BY
fc0287d8edb2        21 minutes ago      /bin/sh -c #(nop) WORKDIR /var/www
c76aaadf8680        21 minutes ago      /bin/sh -c apt-get update && apt-get install…
fa37bd6db22a        3 weeks ago         /bin/sh -c #(nop)  CMD ["php-fpm"]

Или:

docker image ls --all | grep c76aaadf8680

<none>    <none>    c76aaadf8680        21 minutes ago      477MB

NB Ваш идентификатор изображения будет другим.

Вы можете принудительно docker и docker-compose для восстановления изображений без кеша:

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