Dockerfile

docker Пример докеризации проекта SimpleMVC-example

В данной статье рассмотрим вариант добавления проекта SimpleMVC-example в docker-контейнер.
В сборке применены следующие технологии: PHP-FPM, Nginx, MySQL.
Папка docker расположена в корневой директории проекта и имеет следующую структуру:

php alpine docker Установка расширения pgsql (Postgres, Dockerfile)

Возможный вариант установки для pdo_pgsql:

FROM php:8.1-fpm-alpine3.14

RUN apk --no-cache update \
    && apk add --no-cache autoconf g++ make \
    postgresql-dev \
    \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    \
    && docker-php-ext-install pdo_pgsql

-т.е. тут:

  1. сначала ставится пакет postgresql-dev
  2. потом конфигурируется pgsql параметром -with-pgsql=/usr/local/pgsql
  3. и только затем устанавливается само расширение pdo_pgsql

docker-compose COPY failed: forbidden path outside the build context Ошибка Решение

COPY failed: forbidden path outside the build context

Причина

Команда COPY не дает "вылезти" за пределы определенного контекста сборки (соображения безопасности, видимо).

docker-compose volumes Затирает копирование через COPY

Затирание происходит, только если копирование с помощью COPY выполняется в ту же папку, на которую потом после запуска будут применены volumes из docker-compose,
например, у вас тако Dockerfile:

WORKDIR "/var/www/html/site"
#......разные команды

WORKDIR "~"
COPY cmdrun.sh cmdrun.sh
RUN  chmod +x cmdrun.sh

CMD ./cmdrun.sh

И такой docker-compose:

dockerfile CMD перед RUN

При таком порядке исчезает кеширование слоев судя по всему, CMD лучше всего использовать в конце Dockerfile

Dockerfile alias Пример создания псевдонима команды терминала

Для интеркативных шеллов (в ubuntu по умолчанию именно такой), достаточно определить псевдоним как обычно поправим файл ~/.bashrc, все это обернув в вызов докера RUN:

RUN echo 'alias hi="привет, это псевдоним!"' >> ~/.bashrc
Subscribe to RSS - Dockerfile