এটি হতে পারে তুচ্ছ প্রশ্ন হতে পারে তবে এআরজি এবং এনভিভির জন্য ডকস পড়া আমার কাছে বিষয়গুলি পরিষ্কার করে দেয় না।
আমি একটি পিএইচপি-এফপিএম ধারক তৈরি করছি এবং আমি ব্যবহারকারীর প্রয়োজনে কিছু এক্সটেনশন সক্ষম / অক্ষম করার ক্ষমতা দিতে চাই।
এটি দুর্দান্ত হতে পারে যদি কন্ডিশনাল যোগ করে এবং বিল্ড কমান্ডে পতাকাগুলি প্রেরণ করে ডকফায়িলের মধ্যে এটি করা সম্ভব হয় তবে এএফএআইকি সমর্থন করে না।
আমার ক্ষেত্রে এবং আমার ব্যক্তিগত পদ্ধতির কনটেইনার শুরু হওয়ার সাথে সাথে একটি ছোট স্ক্রিপ্ট চালানো হবে যা নিম্নলিখিতগুলির মতো:
#!/bin/sh
set -e
RESTART="false"
# This script will be placed in /config/init/ and run when container starts.
if [ "$INSTALL_XDEBUG" == "true" ]; then
printf "\nInstalling Xdebug ...\n"
yum install -y php71-php-pecl-xdebug
RESTART="true"
fi
...
if [ "$RESTART" == "true" ]; then
printf "\nRestarting php-fpm ...\n"
supervisorctl restart php-fpm
fi
exec "$@"
আমার Dockerfile
দেখতে কেমন লাগে:
FROM reynierpm/centos7-supervisor
ENV TERM=xterm \
PATH="/root/.composer/vendor/bin:${PATH}" \
INSTALL_COMPOSER="false" \
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_ALLOW_XDEBUG=1 \
COMPOSER_DISABLE_XDEBUG_WARN=1 \
COMPOSER_HOME="/root/.composer" \
COMPOSER_CACHE_DIR="/root/.composer/cache" \
SYMFONY_INSTALLER="false" \
SYMFONY_PROJECT="false" \
INSTALL_XDEBUG="false" \
INSTALL_MONGO="false" \
INSTALL_REDIS="false" \
INSTALL_HTTP_REQUEST="false" \
INSTALL_UPLOAD_PROGRESS="false" \
INSTALL_XATTR="false"
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
https://rpms.remirepo.net/enterprise/remi-release-7.rpm
RUN yum install -y \
yum-utils \
git \
zip \
unzip \
nano \
wget \
php71-php-fpm \
php71-php-cli \
php71-php-common \
php71-php-gd \
php71-php-intl \
php71-php-json \
php71-php-mbstring \
php71-php-mcrypt \
php71-php-mysqlnd \
php71-php-pdo \
php71-php-pear \
php71-php-xml \
php71-pecl-apcu \
php71-php-pecl-apfd \
php71-php-pecl-memcache \
php71-php-pecl-memcached \
php71-php-pecl-zip && \
yum clean all && rm -rf /tmp/yum*
RUN ln -sfF /opt/remi/php71/enable /etc/profile.d/php71-paths.sh && \
ln -sfF /opt/remi/php71/root/usr/bin/{pear,pecl,phar,php,php-cgi,phpize} /usr/local/bin/. && \
mv -f /etc/opt/remi/php71/php.ini /etc/php.ini && \
ln -s /etc/php.ini /etc/opt/remi/php71/php.ini && \
rm -rf /etc/php.d && \
mv /etc/opt/remi/php71/php.d /etc/. && \
ln -s /etc/php.d /etc/opt/remi/php71/php.d
COPY container-files /
RUN chmod +x /config/bootstrap.sh
WORKDIR /data/www
EXPOSE 9001
আমি কীভাবে কাজ করছি তা বোঝার জন্য আপনার যদি গভীরভাবে নজর নেওয়া দরকার তবে এখানে পুরো সংগ্রহস্থলটি দেওয়া হল
বর্তমানে এটি কাজ করছে তবে ... আমি যদি 20 টি (একটি এলোমেলো সংখ্যার) এক্সটেনশান বা সক্ষম করতে সক্ষম এমন অন্য কোনও বৈশিষ্ট্য যুক্ত করতে চাই তবে অক্ষম রাখি তবে আমি প্রয়োজনীয় 20 ENV
টির সাথে শেষ করব (কারণ ডকফেরফিল সমর্থন করে না en ফাইল) সংজ্ঞা যার একমাত্র উদ্দেশ্য এই পতাকাটি সেট করা হবে স্ক্রিপ্টটি তখন কী করতে হবে তা জানতে দিন ...
- এটি কি এটি সঠিক উপায়?
- আমি
ENV
এই উদ্দেশ্যে ব্যবহার করা উচিত ?
এটি অর্জনের জন্য আপনার যদি আলাদা ধারণা থাকে তবে দয়া করে আমাকে এটি সম্পর্কে জানান I
ARG
প্রতিটি বিল্ডের সাহায্যে সেগুলি আলাদা মান সহ সেট করার জন্য ব্যবহার করা উচিত--build-arg
এবং আপনি এখনও ডকফাইফাইলে ডিফল্ট মান ব্যবহার করতে পারেন। আপনি যদি ব্যবহার করেন তবে আপনারENV
প্রতিটি বিল্ডের জন্য বিভিন্ন মান নির্ধারণের জন্য ডকস্পাইল নিজেই সম্পাদনা করতে হবে