Docker Compose构建Laravel项目时卡在RUN npm run prod步骤的问题求助
Docker Compose构建Laravel项目时卡在RUN npm run prod步骤的问题求助
我最近在给Laravel项目做Docker化部署,每次执行docker-compose -f docker-compose_Nginx.yml build --no-cache构建镜像时,都会卡在RUN npm run prod这一步,试了好几次都没解决,实在头疼。
以下是执行命令时的输出:
PS C:\Users\Dell\Documents\Studia\Kursy\Kurs PHP-Laravel ZZ\shop-yt> docker-compose -f docker-compose_Nginx.yml build --no-cache 2023/07/30 17:01:45 http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed [+] Building 219.3s (20/23) => => naming to docker.io/library/shop-yt-nginx 0.0s => [laravel stage-0 3/10] WORKDIR /var/www/html 0.1s => [laravel stage-0 4/10] COPY . . 0.2s => [laravel stage-0 5/10] COPY --from=composer:2.5.8 /usr/bin/composer /usr/bin/composer 0.1s => [laravel stage-0 6/10] RUN npm install -g n && n 18.16.1 12.6s => [laravel stage-0 7/10] RUN npm install 5.6s => [laravel stage-0 8/10] RUN npm run prod
下面是我的相关配置文件,麻烦各位帮忙看看哪里出问题了:
Dockerfile_Laravel
FROM php:8.2 RUN apt-get update -y && apt-get install -y \ nodejs \ npm \ curl \ zip \ unzip \ && docker-php-ext-install pdo pdo_mysql WORKDIR /var/www/html COPY . . COPY --from=composer:2.5.8 /usr/bin/composer /usr/bin/composer RUN npm install -g n && n 18.16.1 RUN npm install RUN npm run prod RUN composer install --no-interaction --no-progress RUN cd public && ln -sf ../storage/app/public/ storage ENV PORT=9000 ENTRYPOINT ["docker/nginx/entrypoint.sh"]
Dockerfile_Nginx
FROM nginx:alpine COPY docker/nginx/vhost.conf /etc/nginx/conf.d/default.conf ENV PORT=80
docker-compose_Nginx.yml
version: "3.9" services: laravel: container_name: shop-yt-app-n build: context: . dockerfile: Dockerfile_Laravel ports: - 9000:9000 volumes: - shop-yt-volume:/var/www/html/storage networks: - shop-yt-network nginx: container_name: shop-yt-nginx build: context: . dockerfile: Dockerfile_Nginx ports: - 80:80 networks: - shop-yt-network database: container_name: shop-yt-db image: mariadb:latest ports: - ${DB_PORT}:3306 environment: - MYSQL_DATABASE=${DB_DATABASE} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} volumes: - shop-yt-db-volume:/var/lib/mysql networks: - shop-yt-network volumes: shop-yt-volume: driver: local shop-yt-db-volume: driver: local networks: shop-yt-network: driver: bridge
entrypoint.sh
#!/bin/bash php artisan key:generate php artisan migrate:fresh --seed php artisan cache:clear php artisan config:clear php artisan route:clear php artisan serve --port=$PORT --host=0.0.0.0
Nginx vhost.conf
upstream laravel { server laravel:9000; } server { listen 80; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://laravel; } }
有没有大佬遇到过类似的情况?是我Dockerfile里的npm构建步骤有问题,还是服务器资源不足导致卡住?希望能得到大家的指点,谢谢!
备注:内容来源于stack exchange,提问作者janullo789
相关产品推荐
相关产品推荐

