2 votes

Docker : Comment partager un dossier entre deux conteneurs

Je travaille sur une application qui a un serveur web fonctionnant avec openresty et une application fonctionnant en php avec le front-end en vue.

version: '3'
services:
  php:
    build: ./
    volumes:
      - ./services/php/php.ini:/usr/local/etc/php/php.ini

  web:
    build: ./services/openresty
    ports:
      - "8888:80"
    volumes:
      - ./services/openresty/company.conf:/usr/local/openresty/nginx/conf/nginx.conf
      - ./services/openresty/bodyconfig.conf:/etc/openresty/nginx/conf/bodyconfig.conf

Lorsque je construis l'application, je place mon code Vue dans un dossier dist, ce qui se passe à l'intérieur du conteneur php :

FROM php:7.3-fpm-alpine

RUN apk update \
    && apk add  --no-cache git curl libmcrypt libmcrypt-dev openssh-client icu-dev \
    libxml2-dev bash freetype-dev libpng-dev libjpeg-turbo-dev nodejs npm libzip-dev g++ make autoconf postgresql-dev \
    && docker-php-source extract \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && docker-php-source delete \
    && docker-php-ext-install pdo_pgsql soap intl gd zip \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && rm -rf /tmp/*

CMD ["php-fpm", "-F"]

WORKDIR /var/www/company

COPY ./ ./

RUN bash ./docker_build.sh

EXPOSE 9000

docker_build.sh

cd /var/www/company/js

npm install
npm run build

maintenant, dans le conteneur docker php, il y a un nouveau dossier dist sous /var/www/dist.

nginx doit utiliser ce dossier car il contient un index.html statique qui est servi par nginx comme ceci

location / {
    alias /var/www/company/dist/;
    try_files $uri $uri/ /index.html;
}

Je me demande comment mon conteneur web peut accéder au dossier de construction dist qui se trouve dans le conteneur php.

Merci d'avance

4voto

7_R3X Points 483

Vous pouvez utiliser Lier les montages pour monter ce dossier depuis l'hôte.

Fixer le support

Lorsque vous utilisez un montage en liaison, un fichier ou un répertoire sur la machine hôte est est monté dans un conteneur. Le fichier ou le répertoire est référencé par son nom chemin complet ou relatif sur la machine hôte.

Ou bien, vous pouvez utiliser volume docker et attachez ce volume aux deux conteneurs.

Volume Docker

Les volumes sont le mécanisme préféré pour la persistance des données générées par et utilisées par les conteneurs Docker. Alors que les bind-mounts dépendent de la structure de répertoires de la machine hôte, les volumes sont entièrement gérés par Docker.

Modifier : Lien vers Document officiel de l'implémentation de docker-volume

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X