我正在开发的应用程序具有运行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
预先感谢
答案 0 :(得分:4)
您可以使用bind-mounts从主机挂载该文件夹。
绑定安装
使用绑定安装时,主机上的文件或目录为 安装到容器中。文件或目录由其引用 主机上的完整或相对路径。
或者,您可以使用docker volume并将该卷附加到两个容器上。
Docker卷
卷是用于持久保存由...生成的数据的首选机制 并由Docker容器使用。虽然绑定安装取决于 主机的目录结构,卷完全 由Docker管理。