@null_object

Как передать переменные окружения?

Есть такой Dockerfile: ставятся зависимости и копируются в основной образ на основе Nginx unit. Проблема в том, что переменные окружения передаются только процессу unitd, но их нет, когда подключаешься к контейнеру и пытаешься выполнить какой-нибудь php artisan migrate. Как передать переменные окружения другому процессу в контейнере?

ARG COMPOSER_VERSION=2.5.4
ARG UNIT_VERSION=1.29.1-php8.1
ARG PHP_VERSION=8.1-cli
ARG NODE_VERSION=18.15.0-alpine3.17

FROM composer:${COMPOSER_VERSION} as composer_builder

WORKDIR /deps

COPY composer.json .
COPY composer.lock .

RUN composer install --optimize-autoloader --prefer-dist --no-ansi --no-interaction --no-progress --no-scripts

FROM node:${NODE_VERSION} as node_builder

WORKDIR /deps

COPY package.json .
COPY package-lock.json .
COPY vite.config.ts .
COPY postcss.config.js .
COPY tailwind.config.js .
COPY resources resources

RUN npm ci && npm run build

FROM alpine:3.17 as base

WORKDIR /app

COPY . .
COPY --from=composer_builder /deps/vendor vendor
COPY --from=node_builder /deps/public/build public/build

FROM nginx/unit:${UNIT_VERSION} as api

ARG USER=backend
ARG GROUP=backend

RUN groupadd --gid 1000 ${GROUP} && \
    useradd --uid 1000 --gid ${GROUP} --shell /bin/bash --create-home ${USER}

ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /app

# TODO: Change public folder permissions
COPY --from=base --chown=${USER}:${GROUP} --chmod=777 /app .

COPY build/unit/config.json /docker-entrypoint.d/config.json
COPY build/unit/php.ini /etc/php.ini

RUN apt-get update && \
    apt-get install -y libpq-dev && \
    docker-php-ext-install pgsql pdo_pgsql opcache && \
    apt-get --purge -y remove gcc make && \
    apt-get -y autoremove && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN php artisan config:cache && \
    php artisan route:cache && \
    php artisan view:cache && \
    php artisan optimize

EXPOSE 80
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Используйте ENV, ARG доступны только во время билда.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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