Home > Article > Backend Development > Data migration for PHP applications using Docker Compose, Nginx and MariaDB
Using Docker Compose, Nginx and MariaDB to implement data migration of PHP applications
In the process of developing and deploying PHP applications, data migration is often encountered situation, that is, migrating existing data from one environment to another. To simplify this process, we can use Docker Compose, Nginx and MariaDB to implement data migration. This article will give you a detailed introduction to how to use these tools and provide specific code examples.
Docker Compose is a tool for defining and running multi-container Docker applications. It uses YAML files to configure the application's services, networks, volumes, etc. Nginx is a popular web server and reverse proxy server that can be used to forward HTTP requests to the correct PHP container. MariaDB is an open source relational database management system that can be used to store and manage application data.
First, we need to create a Docker Compose file to define our application’s services. In this example, we will create two services: one is the Nginx server and the other is the MariaDB database. The following is a basic Docker Compose file example:
version: '3' services: nginx: image: nginx ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf mariadb: image: mariadb:10.5 environment: - MYSQL_ROOT_PASSWORD=secret volumes: - ./data:/var/lib/mysql
In the above example, we defined two services: nginx and mariadb. The nginx service uses the official Nginx image and maps the container's port 80 to the host's port 80. We also mount a custom nginx.conf configuration file to the /etc/nginx/conf.d/default.conf
path of the container. The mariadb service uses the official image of MariaDB and sets an environment variable to set the root user's password. We also mounted a directory to store the database data.
Next, we need to create an nginx.conf configuration file to define the virtual host of the Nginx server. In this example, we will configure Nginx to forward all HTTP requests to a PHP container named php-app
. The following is a simple nginx.conf configuration file example:
server { listen 80; server_name localhost; location / { proxy_pass http://php-app; proxy_set_header Host $host; } }
In the above example, we defined a proxy server named php-app
and routed all HTTP requests Forwarded to this server. We also use the proxy_set_header
directive to pass the request's Host header to the proxy server.
Now we can start our application using the following command:
docker-compose up -d
This will create and start the container containing the Nginx and MariaDB services. We can verify that Nginx is working properly by visiting http://localhost
. If everything is fine, you should be able to see the home page of your PHP application.
Next, we will introduce how to implement data migration. Let's say we already have a MySQL database export file backup.sql
that we want to import into our MariaDB container. The following is a simple command example:
docker exec -i <mariadb_container_name> mysql -uroot -p<password> < backup.sql
In the above command, fb86933f67ce8306e5f20be52aba8df4
is the name of your MariaDB container and cb1ebc435675187bdcfb539b370c2e37
is your Set the password of the root user, backup.sql
is the database export file. This command will import the database into the MariaDB container.
If you want to perform regular data backups, you can achieve this through a simple shell script. The following is an example backup script:
#!/bin/bash docker exec <mariadb_container_name> mysqldump -uroot -p<password> <database_name> > backup.sql
In the above example, fb86933f67ce8306e5f20be52aba8df4
is the name of the MariaDB container, and cb1ebc435675187bdcfb539b370c2e37
is the root user's Password, 6b7267f525327f2a23dcb01791a146aa
is the name of the database you want to back up. This script will create a database backup file named backup.sql
.
To sum up, data migration of PHP applications can be easily achieved using Docker Compose, Nginx and MariaDB. By containerizing applications and databases, we can easily deploy and migrate our applications and forward requests through Nginx. I hope this article can help you with data migration when developing and deploying PHP applications.
Reference materials:
The above is the detailed content of Data migration for PHP applications using Docker Compose, Nginx and MariaDB. For more information, please follow other related articles on the PHP Chinese website!