繁体   English   中英

'mysql: not found',试图连接 laravel、mysql 和 nginx 容器中的 Z05B6053315A2DA4BEE6B 容器

[英]'mysql: not found', trying to connect a laravel, mysql and nginx in docker container

  • Ubuntu 20.04

  • Docker 版本 19.03.14

  • docker-compose 版本 1.25.0

我试图弄清楚为什么我会收到与 mysql 相关的错误。 我做的步骤:

  • 克隆我的 laravel 项目
  • docker-compose 构建
  • docker-compose 向上 -d
  • docker-compose 执行应用程序 php 工匠密钥:生成
  • docker-compose 执行应用程序 php 工匠配置:缓存
  • docker-compose 执行应用程序 php 工匠迁移

在最后一个我收到以下错误:

在此处输入图像描述

Migration table created successfully.
Loading stored database schema: /var/www/database/schema/mysql-schema.dump

   Symfony\Component\Process\Exception\ProcessFailedException 

  The command "mysql  --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}" --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --database="${:LARAVEL_LOAD_DATABASE}" < "${:LARAVEL_LOAD_PATH}"" failed.

Exit Code: 127(Command not found)

Working directory: /var/www

Output:
================


Error Output:
================
sh: 1: mysql: not found

  at vendor/symfony/process/Process.php:257
    253▕      */
    254▕     public function mustRun(callable $callback = null, array $env = []): self
    255▕     {
    256▕         if (0 !== $this->run($callback, $env)) {
  ➜ 257▕             throw new ProcessFailedException($this);
    258▕         }
    259▕ 
    260▕         return $this;
    261▕     }

      +19 vendor frames 
  20  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

我的文件:

docker-compose.yml

version: '3.7'

services:

  #  The Application
  app:
    build:
      context: .
      dockerfile: docker-files/app.dockerfile
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    volumes:
      - ./:/var/www
      - ./docker-files/php/local.ini:/usr/local/etc/php/conf.d/local.ini
    env_file: '.env'
    networks:
      - app-network

  # The Web Server
  nginx:
    container_name: nginx
    restart: unless-stopped
    tty: true
    build:
      context: .
      dockerfile: docker-files/web.dockerfile
    volumes:
      - ./:/var/www
      - ./docker-files/nginx/conf.d/:/etc/nginx/conf.d/
    ports:
      - "8990:80"
      - "443:443"
    networks:
      - app-network
  
  # The Database
  db:
    container_name: db
    restart: unless-stopped
    tty: true
    image: mysql:5.7
    volumes:
      - dbdata:/var/lib/mysql/
      - ./docker-files/mysql/my.cnf:/etc/mysql/my.cnf
    environment:
      MYSQL_DATABASE: maindbs
      MYSQL_USER: root
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - "3306:3306"
    networks:
      - app-network
  
#Volumes
volumes:
  dbdata:
    driver: local

#Docker Networks
networks:
  app-network:
    driver: bridge

app.dockerfile

FROM php:7.4-fpm

COPY composer.lock composer.json /var/www/

COPY database /var/www/database

WORKDIR /var/www

# Install dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libzip-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install extensions
RUN docker-php-ext-install pdo_mysql zip exif pcntl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy application folder
COPY . /var/www

RUN chown -R www-data:www-data \
    /var/www/storage \
    /var/www/bootstrap/cache

RUN php artisan optimize

EXPOSE 9000
CMD ["php-fpm"]

web.dockerfile

FROM nginx:alpine

ADD docker-files/nginx/conf.d/app.conf /etc/nginx/conf.d/default.conf

COPY public /var/www/public

.env

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=maindbs
DB_USERNAME=root
DB_PASSWORD=123456

我可以使用 127.0.0.1:8990 连接到 laravel 应用程序

您在尝试执行 mysql 命令的容器中没有 mysql 客户端。 通过 Dockerfile 添加 mysql。

RUN apt-get update && apt-get install -y mysql-client && rm -rf /var/lib/apt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM