2016-01-19 11 views
26

पर चलाने के लिए संगीतकार (PHP निर्भरता प्रबंधक) प्राप्त करें नोट: मैं अब इस माहौल का उपयोग नहीं करता हूं इसलिए मेरे पास जवाबों का परीक्षण करने और स्वीकार करने का कोई तरीका नहीं है। मुझे माफ कर दो।डॉकर छवि निर्माण

टी एल; डॉ आप मुझे एक डोकर छवि पीएचपी निर्भरता को संभालने के लिए संगीतकार का उपयोग करता है का एक उदाहरण को इंगित कर सकते हैं?

सभी इस पोस्ट में मेरे सवालों का संगीतकार php निर्भरता उपकरणनहींडोकर-संगीतकारअंजीर के उत्तराधिकारी के बारे में कर रहे हैं।

मैं wordpress installed as a composer dependency चलाने के लिए अपनी खुद की डॉकर छवि बनाने की कोशिश कर रहा हूं।

मैं आधार के रूप में डॉकर PHP छवि का उपयोग करके एक डॉकर छवि बनाने पर काम कर रहा हूं और मुझे क्या करना है संगीतकार स्थापित करना और छवि निर्माण समय या छवि निर्माण समय पर एक संगीतकार अद्यतन आदेश चलाएं (पता नहीं अगर दोनों ठीक रहेगा)।

मैं मैन्युअल रूप से सभी चरणों को निष्पादित करके सब कुछ ठीक कर सकता हूं (एक डॉकर छवि चला रहा हूं, इसमें घुसपैठ कर रहा हूं, और प्रत्येक चरण की प्रतिलिपि बनाना और चिपकाना)।

लेकिन जब मैं डॉकरफ़ाइल पर उन सभी चरणों को डालता हूं तो मुझे फ़ाइलों को लिखने के लिए संगीतकार नहीं मिलता है।

मैं कुछ समय के लिए न्यूनतम असफल उदाहरण प्राप्त करने का प्रयास कर रहा हूं लेकिन मुझे जो मिला है वह काफी कम नहीं है।

मेरा परीक्षण

(नीचे प्रासंगिक GitHub रेपोस के लिए लिंक) निम्नलिखित से बना है Dockerfile

NFORMATION ~~~# 

# based on 
# https://hub.docker.com/r/richarvey/nginx-php-fpm/ 
# and 
# https://hub.docker.com/_/wordpress/ 

FROM php:7.0.2-apache 

MAINTAINER Miquel Adell <[email protected]> 

ENV WORDPRESS_VERSION 4.4.1 



#~~~ DEPENDENCIES ~~~# 

# Add PHP repository to apt source 
RUN apt-get update \ 
    && apt-get install -y \ 
     libpng12-dev \ 
     libjpeg-dev \ 
     curl \ 
     sed \ 
     zlib1g-dev \ 
    && docker-php-ext-install \ 
     zip \ 
     mysqli 

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 



#~~~ DIRS ~~~# 

WORKDIR /var/www/html/ 



#~~~ WORDPRESS ~~~# 

COPY files/composer.json composer.json 
ONBUILD RUN composer update 

डोकर-compose.yml

wordpress: 
    image: miqueladell/composed_wordpress_test 
    links: 
    - wordpress_db:mysql 
    environment: 
    - VIRTUAL_HOST=miqueladell.dev 
    - WORDPRESS_DB_NAME=wordpress 
    ports: 
    - "80" 

wordpress_db: 
    image: miqueladell/mariadb-utf8mb4 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 

मेरे परीक्षण निम्नानुसार है

  1. बिल्ड एक छवि Dockerfile युक्त एक निर्देशिका में इस आदेश को क्रियान्वित करने से ऊपर

    docker build -t miqueladell/composed_wordpress_test . 
    

    (कोई लॉग में त्रुटियों)

  2. चिपकाया चलाकर कि छवि का उपयोग करें एक कंटेनर का निर्माण करने के डॉकर-कंपोज़ युक्त निर्देशिका में निम्न आदेश।YML ऊपर

    docker-compose up 
    

    (कोई लॉग में त्रुटियों) चल रहा कंटेनर में

  3. बैश चिपकाया यदि फ़ाइलें हैं देखने के लिए सक्षम होने के लिए वहाँ

    docker exec -i -t miqueladellv2_wordpress_1 bash 
    
  4. /var की ls/www/html

    [email protected]:/var/www/html# ls -al 
    total 12 
    drwxr-xr-x 2 www-data www-data 4096 Jan 19 10:50 . 
    drwxr-xr-x 5 root  root  4096 Jan 19 10:50 .. 
    -rw-r--r-- 1 root  root  138 Jan 15 09:18 composer.json 
    

आप चरण 4 में देख सकते हैं कि संगीतकार अद्यतन बिल्कुल नहीं चल रहा है।

मैं एक ही परिणाम के साथ दोनों

RUN composer update 

और

ONBUILD RUN composer update 
Dockerfile पर

का उपयोग कर की कोशिश की है।

अगर मैं परीक्षण के पिछले चरण 4 के लिए वापस जाओ और मैं मैन्युअल डोकर कंटेनर के बैश शीघ्र पर संगीतकार अद्यतन चलाने मैं:

[email protected]:/var/www/html# composer update 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
    - Installing johnpbloch/wordpress-core-installer (0.2.1) 
    Downloading: 100% 

    - Installing johnpbloch/wordpress (4.4.1) 
    Downloading: 100% 

Writing lock file 
Generating autoload files 
[email protected]:/var/www/html# ls -al 
total 24 
drwxr-xr-x 4 www-data www-data 4096 Jan 19 11:12 . 
drwxr-xr-x 6 root  root  4096 Jan 19 11:12 .. 
-rw-r--r-- 1 root  root  138 Jan 15 09:18 composer.json 
-rw-r--r-- 1 root  root  3718 Jan 19 11:12 composer.lock 
drwxr-xr-x 4 root  root  4096 Jan 19 11:12 vendor 
drwxr-xr-x 5 root  root  4096 Jan 19 11:12 wordpress 
[email protected]:/var/www/html# 

जो वास्तव में उत्पादन मैं उम्मीद कर रहा था है चरण 4

मुझे कुछ सलाह पसंद आएगी। धन्यवाद।

GitHub पूर्ण फ़ाइलों

+0

ऑनब्यूल्ड संगीतकार अद्यतन लाइन से ONBUILD को हटाने पर उस पर काम करना प्रतीत होता है उदाहरण ... तो मेरा पिछला प्रश्न गलत है लेकिन समस्या हल हो जाती है –

उत्तर

15

मैं आज इस समस्या में पड़ गए करने के लिए लिंक।

मेरे लिए यह हल किया गया कि छवि में परिभाषित एक की तुलना में एक अलग निर्देशिका का उपयोग करना था।

ऐसा लगता है कि निर्देशिका को वॉल्यूम के रूप में परिभाषित किया गया है, तो निर्माण प्रक्रिया के दौरान निर्देशिका में किए गए परिवर्तनों को त्याग दिया जाता है।

यहाँ मेरी

FROM richarvey/nginx-php-fpm 

# Install dependencies 
RUN apt-get update && \ 
    apt-get install curl nano && \ 
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 

# Add update nginx config 
COPY conf/nginx-site.conf /etc/nginx/sites-available/default.conf 

# Bundle app source 
COPY app/ /app 

# Install app dependencies 
RUN cd /app && \ 
    composer install --no-interaction 

EXPOSE 80 

और फिर conf/nginx-site.conf में मैं अपने आवेदन के लिए रूट अद्यतन काम कर Dockerfile

का एक उदाहरण (संक्षिप्तता के लिए छोटा)

server { 
    # ... the rest of your nginx config 

    root /app/public; 

    # ... the rest of your nginx config 
} 
+1

वाई ध्वज का उपयोग करना याद रखें: "apt-get install -Y ..." – EnchanterIO

7

इस तरह स्थापित कर रहा है संगीतकार इस समस्या से बचने होगा:

RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \ 
&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \ 
# Make sure we're installing what we think we're installing! 
&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \ 
&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot \ 
&& rm -f /tmp/composer-setup.* 
+0

हैश की जांच करना वास्तव में एक अच्छा स्पर्श है – erkmene

संबंधित मुद्दे