在Laravel 5.8中Docker中迁移期间连接被拒绝

问题描述 投票:0回答:1

在我的docker构建期间,我似乎无法进行迁移。

我试过了

泊坞窗,compose.yml

version: '3'
services:
  portalmodules:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8011:8000
    links:
      - database
  database:
    image: postgres:11.2
    ports:
    - "5432:5432"
    expose:
    - "5432"
    environment:
      - "POSTGRES_PASSWORD=12345"
      - "POSTGRES_USER=john"
      - "POSTGRES_DB=api"

Dockerfile

FROM composer:1.8.5 as build_stage

COPY . /src
WORKDIR /src
RUN composer install

FROM alpine:3.8
RUN apk --no-cache add \
php7 \
php7-mbstring \
php7-session \
php7-openssl \
php7-tokenizer \
php7-json \
php7-pdo \
php7-pdo_pgsql \
php7-pgsql

COPY --from=build_stage /src  /src
RUN ls -al
RUN set -x \
addgroup -g 82 -S www-data \
adduser -u 82 -D -S -G www-data www-data

WORKDIR /src
RUN ls -al
RUN chmod -R 777 storage
RUN chmod +x run.sh
RUN cp run.sh /tmp
ENTRYPOINT ["/tmp/run.sh"]

润.是

#!/bin/sh

php artisan migrate:fresh --seed
php artisan serve --host=0.0.0.0

.ENV

APP_NAME=API
APP_ENV=local
APP_KEY=base64:Qa3U2oP5IQ93MGEJu61MrcQFRSsS5vQRWUrqYwIplEo=
APP_DEBUG=true
APP_URL=http://1.1.1.1
#---------------------------------------------- DATABASE
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=api
DB_USERNAME=john
DB_PASSWORD=12345

我尝试了3种不同的值qazxsw poi qazxsw poi,qazxsw poi,DB_HOST

我不断得到

localhost

如何进行并进一步调试?

laravel docker laravel-5 docker-compose dockerfile
1个回答
1
投票

正确的127.0.0.1database,因为每个容器都有自己的IP地址,因此您的数据库不在应用程序的enter image description here上。

请注意,您同时启动数据库和laravel应用程序,因此数据库可能仍在初始化,然后迁移运行,并且无法连接,因为连接到数据库太早。

您有一些选择:在运行迁移之前等待数据库准备就绪,重试迁移直到它成功或使用与laravel应用程序相同的映像从其他服务运行迁移命令(并设置DB_HOST以便迁移容器重新启动,直到它成功迁移)。

© www.soinside.com 2019 - 2024. All rights reserved.