Многоступенчатая сборка с контейнерами, настроенными через docker -compose - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь построить установку из 2 контейнеров с PHP и NGINX контейнером. Я использую docker -compose для настройки контейнеров с некоторыми настройками проекта c. Рядом с этим в моем каталоге root есть Dockerfile, в котором есть несколько этапов сборки для самого проекта. Как только проект будет собран, я хочу скопировать его во вновь настроенный контейнер NGINX из docker -compose. Однако я получаю 2 NGINX контейнера, а не PHP контейнера. Где я ошибаюсь?

├── Dockerfile
├── app
├── docker-compose
│   ├── nginx
│   │   ├── Dockerfile
│   │   ├── conf.d
│   │   │   └── site.conf
│   │   └── nginx.conf
│   └── php
│       └── Dockerfile
├── docker-compose.yml

docker -compose.yml

version: '3.7'

services:
  php:
    build:
      args:
        user: shepherd
        uid: 1000
      context: .
      dockerfile: docker-compose/php/Dockerfile
    image: scan-en-win
    container_name: scan-en-win-php
    restart: unless-stopped
    working_dir: /var/www

  nginx:
    build:
      context: .
      dockerfile: docker-compose/nginx/Dockerfile
    image: scan-en-win
    container_name: scan-en-win-nginx
    restart: unless-stopped
    working_dir: /var/www

Dockerfile

# Composer dependencies
FROM composer:latest as vendor

COPY database/ database/

COPY composer.json composer.json
COPY composer.lock composer.lock

RUN composer install \
    --ignore-platform-reqs \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --prefer-dist

# Front end
FROM node:10 as frontend

RUN mkdir -p /app/public

COPY package.json webpack.mix.js yarn.lock /app/
COPY resources/js/ /app/resources/js/
COPY resources/sass/ /app/resources/sass/

WORKDIR /app

RUN yarn install && yarn production

FROM scan-en-win-nginx

COPY . /var/www/
COPY --from=vendor /app/vendor/ /var/www/vendor/
COPY --from=frontend /app/public/js/ /var/www/public/js/
COPY --from=frontend /app/public/css/ /var/www/public/css/
COPY --from=frontend /app/mix-manifest.json /var/www/mix-manifest.json

docker -compose / nginx / Dockerfile

FROM nginx:stable

COPY docker-compose/nginx/nginx.conf /etc/nginx
COPY docker-compose/nginx/conf.d/site.conf /etc/nginx/conf.d/site.conf

docker -compose / php / Dockerfile

FROM php:7.2-fpm

# Defined in docker-compose.yml
ARG user
ARG uid

# Install dependencies
RUN apt-get update && apt-get install -y \
    wget \
    curl \
    git \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    libcurl4-gnutls-dev \
    zip \
    unzip \
    gettext-base

# Clean up
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP modules
RUN docker-php-ext-install \
    pdo_mysql \
    zip \
    gd \
    curl \
    mbstring \
    xml \
    bcmath \
    json

RUN pecl install -o -f redis \
    && rm -rf /tmp/pear \
    && docker-php-ext-enable redis

# Create a system user for commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user \
    && chown -R $user:$user /home/$user
...