#laravel #docker #docker-compose #laravel-mix #webpack-cli
Вопрос:
Это с помощью Docker. Это работает при использовании wsl2
, но при использовании hyper-v
у меня возникает проблема.
Я пытаюсь запустить mix watch -- --watch-options-poll=3000
или mix --production
, но каждый раз, когда я запускаю его, у меня возникает следующая проблема.
[webpack-CLI и] [ошибка: возвращать eexist: файл уже существует, открыть ‘/ВАР/www в/HTML-код/общественных/сайт/изображения/электронной сторону.формат PNG’] { ошибка: -17,
код: ‘возвращать eexist’, системный вызов: ‘открыть’, путь: ‘/ВАР/www в/HTML-код/общественных/сайт/изображения/электронной сторону.формат PNG’ }
webpack.mix.js
const mix = require('laravel-mix');
const oldMix = require('laravel-mix');
const path = require('path');
const glob = require('glob');
const PurgeCSSPlugin = require('purgecss-webpack-plugin');
//-- Website Mix --
mix.babelConfig({
plugins: ['@babel/plugin-syntax-dynamic-import', '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-optional-chaining'],
});
mix.webpackConfig({
watchOptions: {
ignored: /node_modules/
},
stats: {
warnings: false,
},
output: {
chunkFilename: 'website/js/chunks/[chunkhash].js',//replace with your path
},
resolve: {
alias: {
'@fonts': path.resolve(__dirname, 'resources/website/styles/fonts'),
'@images': path.resolve(__dirname, 'resources/website/images')
}
},
plugins: [
new PurgeCSSPlugin({
paths: glob.sync('website/*', { nodir: true }),
})
]
});
mix.options({
postCss: [
require('autoprefixer'),
],
fileLoaderDirs: {
fonts: 'website/fonts',
images: 'website/images'
}
});
mix.js('resources/website/index.js', 'public/website/js').react();
mix.version();
//-- Website Mix End --
//-- Old Application and Dashboard --
oldMix.webpackConfig({
watchOptions: {
ignored: /node_modules/
}
});
oldMix.babel([
'public/old/Scripts/Core/Primitive/jQuery.js',
'public/old/Scripts/Core/Primitive/Slick.js',
'public/old/Scripts/Core/Primitive/Angular.js',
'public/old/Scripts/Core/Primitive/Bootstrap.js',
'public/old/Scripts/Core/Primitive/Masonry.js',
'public/old/Scripts/Core/Primitive/Images.js',
'public/old/Scripts/Core/Primitive/Moment.js',
'public/old/Scripts/Core/Primitive/Date.js',
'public/old/Scripts/Core/Primitive/UTM.js',
'public/old/Scripts/Dashboard/Tinymce/TinyMCE.js',
'public/old/Scripts/Core/Primitive/Pusher.js',
'public/old/Scripts/Core/Primitive/Reviews.js',
'public/old/Scripts/Core/Primitive/Fancybox.js',
'public/old/Scripts/Core/Primitive/Confetti.js',
'public/old/Scripts/Core/Primitive/Signature.js',
], 'public/old/Build/Scripts/Primitive.js');
oldMix.babel([
'public/old/Scripts/Core/Angular/*.js',
'public/old/Scripts/Dashboard/Tinymce/UITinyMCE.js'
], 'public/old/Build/Scripts/Directives.js');
oldMix.babel([
'public/old/Scripts/Dashboard/UI.js',
'public/old/Scripts/Dashboard/Modules/OriginFactories.js',
'public/old/Scripts/Dashboard/Modules/AddonsControllers.js',
'public/old/Scripts/Dashboard/Modules/ProductsControllers.js',
'public/old/Scripts/Dashboard/Modules/BoilerAdviceControllers.js',
'public/old/Scripts/Dashboard/Modules/DashboardAnalytics.js',
'public/old/Scripts/Dashboard/Controllers.js',
'public/old/Scripts/Dashboard/Routes.js',
], 'public/old/Build/Scripts/Dashboard.js');
oldMix.babel([
'public/old/Scripts/Application/UI.js',
'public/old/Scripts/Application/Controllers.js',
'public/old/Scripts/Application/Routes.js',
], 'public/old/Build/Scripts/Application.js');
oldMix.babel([
'public/old/Scripts/Core.js'
], "public/old/Build/App.js");
oldMix.styles(['public/old/Styles/*.css'], 'public/old/Build/Styles/Core.css');
oldMix.styles(['public/old/Styles/Home/*.css'], 'public/old/Build/Styles/Home.css');
oldMix.styles(['public/old/Styles/Dashboard/*.css'], 'public/old/Build/Styles/Dashboard.css');
oldMix.styles(['public/old/Styles/Application/*.css'], 'public/old/Build/Styles/Application.css');
oldMix.version();
//-- Old Application and Dashboard End --
композитор.докерфайл:
FROM composer:1.6.5
RUN addgroup -g 1000 laravel amp;amp; adduser -G laravel -g laravel -s /bin/sh -D laravel
WORKDIR /var/www/html
CMD ["tail", "-f", "/dev/null"]
докер-compose.yml:
version: '3'
networks:
laravel:
services:
application-aws:
build:
context: .
dockerfile: nginx.dockerfile
container_name: nginx-aws
ports:
- 5001:5001
volumes:
- ./src:/var/www/html:delegated
depends_on:
- php
- mysql
links:
- mysql
networks:
- laravel
mysql:
image: mysql:5.7.33
container_name: mysql-aws
restart: unless-stopped
tty: true
ports:
- 3306:3306
environment:
MYSQL_HOST: mysql
MYSQL_DATABASE: heatable
MYSQL_USER: heatable
MYSQL_ROOT_PASSWORD: password
networks:
- laravel
volumes:
- ./mysql:/var/lib/mysql
php:
build:
context: .
dockerfile: php.dockerfile
container_name: php-aws
volumes:
- ./src:/var/www/html:delegated
networks:
- laravel
links:
- mysql
depends_on:
- mysql
composer:
build:
context: .
dockerfile: composer.dockerfile
container_name: composer-aws
volumes:
- ./src:/var/www/html
working_dir: /var/www/html
depends_on:
- php
user: laravel
entrypoint: ['composer', '--ignore-platform-reqs']
networks:
- laravel
npm:
image: node:14.17.1
tty: true
container_name: npm-aws
volumes:
- ./src:/var/www/html
- /var/www/html/node_modules
working_dir: /var/www/html
entrypoint: ['npm']
networks:
- laravel
artisan:
build:
context: .
dockerfile: php.dockerfile
container_name: artisan-aws
volumes:
- ./src:/var/www/html:delegated
depends_on:
- mysql
working_dir: /var/www/html
user: laravel
entrypoint: ['php', '/var/www/html/artisan']
links:
- mysql
networks:
- laravel
файл nginx.dockerfile:
FROM nginx:stable-alpine
ADD ./nginx/nginx.conf /etc/nginx/nginx.conf
ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /var/www/html
RUN addgroup -g 1000 laravel amp;amp; adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN chown laravel:laravel /var/www/html
файл npm.dockerfile:
FROM node:14.17.1
WORKDIR /var/www/html
COPY ./src/package.json .
RUN npm install
файл php.dockerfile:
FROM php:7.3-fpm-alpine
ADD ./php/www.conf /usr/local/etc/php-fpm.d/www.conf
RUN addgroup -g 1000 laravel amp;amp; adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN mkdir -p /var/www/html
RUN chown laravel:laravel /var/www/html
WORKDIR /var/www/html
RUN apk add libpng-dev
RUN docker-php-ext-install mysqli pdo pdo_mysql gd
Комментарии:
1. Вы пробовали удалить какой-либо код, чтобы выяснить, в чем проблема? Я бы начал с удаления плагина purge-css. Вы пробовали отлаживать, чтобы увидеть, где возникает проблема? hackernoon.com/debug-node-js-with-chrome-devtools-aca7cf83af6b
2. Попробуйте найти вариант принудительного смешивания, заменяющего уже существующие изображения.
3. @YaBCK Пожалуйста, не могли бы вы включить в вопрос свой
docker-compose.yml
файл и свой пользовательскийDockerfile
, если вы его используете?4. @jccampanero — Я включил все файлы докеров в проект и
docker-compose.yml
5. Большое вам спасибо за отзыв @YaBCK. Кстати, отличная штука. Я не уверен, но я думаю, что ваша проблема может быть связана с конфигурацией ваших томов. Поведение в wls2 и hyper-v может быть разным. Я бы попробовал две вещи: во-первых, удалить
:delegated
конфигурацию. Кроме того, поскольку вы активно используете один и тот же том в разных контейнерах, возможно, вы могли бы создать именованный том и повторно использовать этот том в них .