简体   繁体   English

如何将 laravel 应用程序从 docker 容器内迁移到容器外的 mysql 数据库?

[英]How to migrate laravel app from inside docker container to a mysql database outside the container?

How can I do php artisan migrate from a docker container where the mysql-server is deployed in another container我该如何做 php 工匠从 docker 容器迁移,其中 mysql-server 部署在另一个容器中

Here is the Dockerfile of the laravel app这是 laravel 应用程序的 Dockerfile

FROM php:7.2.19-fpm
FROM composer
FROM octava/php7.4-mysql5.7
RUN mkdir /usr/src/REST-API/
WORKDIR /usr/src/REST-API
COPY . /usr/src/REST-API
RUN cd /usr/src/REST-API
RUN cat .env
RUN composer install
CMD php artisan serve --host 0.0.0.0

I used mysql/mysql-server:latest for the database container and I ran this command:我使用 mysql/mysql-server:latest 作为数据库容器,并运行以下命令:

sudo docker run --name=mysql3.0 -dp 3309:3306 mysql/mysql-server

my env file is我的环境文件是

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3309

An error arise when I do docker exec -it <container-name> php artisan migrate from the container?当我从容器docker exec -it <container-name> php artisan migrate时出现错误? Illuminate\Database\QueryException照亮\数据库\查询异常

  SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (SQL: select * from information_schema.tables where table_schema = devices and table_name = migrations and table_type = 'BASE TABLE')

You can create a new network in docker and add these 2 containers(php and mysql) to that network so that they can see each other.您可以在 docker 中创建一个新网络,并将这 2 个容器(php 和 mysql)添加到该网络,以便它们可以互相看到。 Basically, you are pointing to DB_HOST in your .env file and it should be accessible to the container running your Laravel app.基本上,您在.env文件中指向DB_HOST ,运行 Laravel 应用程序的容器应该可以访问它。 it could be something like serverIp:dbPort or set as a local ip if they are on the same netowrk.如果它们在同一个网络上,它可能类似于serverIp:dbPort或设置为本地 ip。
To create a new network run:要创建新的网络运行:

docker network create -d bridge myNetwork

To connect a container to a network run:要将容器连接到网络运行:

docker network connect myNetwork containerName

Refer here for creating networks in Docker also here for connecting containers to networking请参阅此处以在 Docker 中创建网络,也可在此处将容器连接到网络

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

相关问题 可以从 docker 容器外部连接到数据库,但不能从内部连接到数据库(在 laravel 中) - Can connect to database from outside a docker container but not from inside (in laravel) Laravel 未从 Docker 容器连接到 MySQL 但 Z92A19290E06D1C230E74A9C83C47 - Laravel is not connecting to MySQL from Docker container but PDO is Laravel Sail:在 docker 容器内运行 Mysql PHP Migration - Laravel Sail: Run Mysql PHP Migration inside docker container 如何连接到 Docker 容器之外的远程数据库? - How can I connect to a remote database outside of my Docker container? 如何将Docker PHP容器连接到MySql容器? - How to connect Docker PHP container to MySql container? 从docker容器中的laravel应用程序连接到主机中的Postgresql? - Connect from laravel app in docker container to Postgresql in host machine? 不能 Curl docker 容器从容器外部运行 apache - Can't Curl docker container running apache from outside the container 通过 docker 将 laravel 容器连接到现有的 mysql 容器 - Connect laravel container to existing mysql container via docker compose Docker容器在本地连接到MySQL数据库-&gt;重定向到另一个容器 - Docker container connect to MySQL database locally -> redirect to another container 将Docker容器连接到远程MySQL数据库 - Connecting a Docker container to a remote MySQL Database
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM