Docker:如何在两个容器之间共享文件夹

时间:2019-08-21 12:40:31

标签: php docker dockerfile

我正在开发的应用程序具有运行openresty的网络服务器和运行在ue中前端的php上的应用程序。

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

在构建应用程序时,我正在将我的vue代码构建到dist文件夹中,这发生在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

现在在php docker容器内的/ var / www / dist下是一个新文件夹dist。

nginx需要使用此文件夹,因为它包含一个静态的index.html,它由像这样的nginx提供

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

我想知道我的Web容器如何访问位于php容器内的构建文件夹dist

预先感谢

1 个答案:

答案 0 :(得分:4)

您可以使用bind-mounts从主机挂载该文件夹。

  

绑定安装

     

使用绑定安装时,主机上的文件或目录为   安装到容器中。文件或目录由其引用   主机上的完整或相对路径。

或者,您可以使用docker volume并将该卷附加到两个容器上。

  

Docker卷

     

卷是用于持久保存由...生成的数据的首选机制   并由Docker容器使用。虽然绑定安装取决于   主机的目录结构,卷完全   由Docker管理。

编辑: 链接到Official document of docker-volume implementation