Size: a a a

2020 December 09

DT

Dmitriy Tkachenko in PHP
Для кэша видимо
источник

SZ

Sergey Zolotov in PHP
Константин Грачев
чо так сложно)
А что за "отдельными слоями каждую директорию" ?
если обновил src, чтобы vendor, config, bin и тд остались с кеше
источник

DT

Dmitriy Tkachenko in PHP
Ну там же если один кэшмисс, то все остальное уже не из кэша идет
источник

КГ

Константин Грачев... in PHP
Sergey Zolotov
если обновил src, чтобы vendor, config, bin и тд остались с кеше
ёлы палы, а я ведь этот момент проипал при последнем рефакторинге ...
источник

SZ

Sergey Zolotov in PHP
Константин Грачев
ёлы палы, а я ведь этот момент проипал при последнем рефакторинге ...
ну разница в том что тебе на прод будет заезжать 1мб слой всего, или весь вендор на сотку (условно)
источник

SZ

Sergey Zolotov in PHP
некоторые страдают базовыми образами и дрочат на алпайн, но при этом сами образы написаны так себе
источник

КГ

Константин Грачев... in PHP
Sergey Zolotov
ну разница в том что тебе на прод будет заезжать 1мб слой всего, или весь вендор на сотку (условно)
Ну у меня сейчас прод образ каждый раз composer install без кеша делает, при любых изменениях
источник

SZ

Sergey Zolotov in PHP
источник

SZ

Sergey Zolotov in PHP
COPY composer.json composer.lock symfony.lock ./
RUN set -eux; \
 composer install -o --prefer-dist --no-progress --no-scripts; \
 composer clear-cache

COPY .env ./
RUN composer dump-env prod; \
   rm .env

COPY bin bin/
COPY config config/
COPY templates templates/
COPY src src/
COPY web/app.php web/app.php

RUN set -eux; \
 mkdir -p var/cache var/log; \
 composer dump-autoload --classmap-authoritative --no-dev; \
 composer run-script --no-dev post-install-cmd; \
 chown -R www-data:www-data var/cache/; \
 chmod +x bin/console; sync

RUN echo -n "\nopcache.preload=/app/var/cache/prod/App_KernelProdContainer.preload.php" >> /usr/local/etc/php/php.ini
источник

КГ

Константин Грачев... in PHP
Sergey Zolotov
некоторые страдают базовыми образами и дрочат на алпайн, но при этом сами образы написаны так себе
А зацени мой, есть что в глаза бросается, кроме composer install на каждый чих)

https://github.com/automagistre/automagistre/blob/master/Dockerfile
источник

КГ

Константин Грачев... in PHP
Sergey Zolotov
COPY composer.json composer.lock symfony.lock ./
RUN set -eux; \
 composer install -o --prefer-dist --no-progress --no-scripts; \
 composer clear-cache

COPY .env ./
RUN composer dump-env prod; \
   rm .env

COPY bin bin/
COPY config config/
COPY templates templates/
COPY src src/
COPY web/app.php web/app.php

RUN set -eux; \
 mkdir -p var/cache var/log; \
 composer dump-autoload --classmap-authoritative --no-dev; \
 composer run-script --no-dev post-install-cmd; \
 chown -R www-data:www-data var/cache/; \
 chmod +x bin/console; sync

RUN echo -n "\nopcache.preload=/app/var/cache/prod/App_KernelProdContainer.preload.php" >> /usr/local/etc/php/php.ini
У меня просто раньше было 2 стейджа у php, base и prod.
prod отличается от base только скопированными src и прогретым кешом. Base же пуллится на локалхост и в base тесты запускаются в pipelines. В base так же был кеш от composer install, что позволяло делать composer install на локалхосте без обращений в инет (быстро кароч)

Я тут на днях решил упороться и вынес сборка каждого экстеншена в отдельные мультистейджи. А потом меня понесло и я переписал на alpine, плюс убрал кеш композера из base образа. При этом composer install просто поставил в конец без задней мысли)
источник

ЕР

Евгений Ромашкан... in PHP
Sergey Zolotov
COPY composer.json composer.lock symfony.lock ./
RUN set -eux; \
 composer install -o --prefer-dist --no-progress --no-scripts; \
 composer clear-cache

COPY .env ./
RUN composer dump-env prod; \
   rm .env

COPY bin bin/
COPY config config/
COPY templates templates/
COPY src src/
COPY web/app.php web/app.php

RUN set -eux; \
 mkdir -p var/cache var/log; \
 composer dump-autoload --classmap-authoritative --no-dev; \
 composer run-script --no-dev post-install-cmd; \
 chown -R www-data:www-data var/cache/; \
 chmod +x bin/console; sync

RUN echo -n "\nopcache.preload=/app/var/cache/prod/App_KernelProdContainer.preload.php" >> /usr/local/etc/php/php.ini
Ну это в 10 раз меньше кода чем в наборе ямлов небольшой аппки в k8s
источник

SZ

Sergey Zolotov in PHP
Константин Грачев
У меня просто раньше было 2 стейджа у php, base и prod.
prod отличается от base только скопированными src и прогретым кешом. Base же пуллится на локалхост и в base тесты запускаются в pipelines. В base так же был кеш от composer install, что позволяло делать composer install на локалхосте без обращений в инет (быстро кароч)

Я тут на днях решил упороться и вынес сборка каждого экстеншена в отдельные мультистейджи. А потом меня понесло и я переписал на alpine, плюс убрал кеш композера из base образа. При этом composer install просто поставил в конец без задней мысли)
какой-то адок вышел) альпан того не стоит. дебиан образы весят по 30мб нынче
источник

SZ

Sergey Zolotov in PHP
источник

КГ

Константин Грачев... in PHP
Sergey Zolotov
какой-то адок вышел) альпан того не стоит. дебиан образы весят по 30мб нынче
Ну разница между buster и alpine у меня только в apt-get update && apt-get install -> apk add —no-cache. Ну то есть, не понятно, не стоит того - чего?)
источник

КГ

Константин Грачев... in PHP
Официальный php-fpm-buster образ жирный
источник

AD

Andrey Dembitskyi in PHP
Sergey Zolotov
а докер...
не забудь подчистить темп файлы после пакетов
не провтыкай правильный порядок, иначе кеш слоев не будет работать
заюзай мульти стейдж
не забыть за юзеров и права
образ не должен много весить
билд аргументы могут сломать кеш
в случае с пхп не забудь закинуть все отдельными слоями каждую директорию

впизду короче
источник

SZ

Sergey Zolotov in PHP
Константин Грачев
Официальный php-fpm-buster образ жирный
100мб
источник

SZ

Sergey Zolotov in PHP
у нас делается пул базовых образов на бутстрапе новой ноды в кластере
источник

SZ

Sergey Zolotov in PHP
т.е 100мб тянется только 1 раз из ближайшего зеркала
источник