Self hosted Wordpress 101: self-hosted wordpress docker?

Subscribers:
4,200
Published on ● Video Link: https://www.youtube.com/watch?v=R7Jt8wMUix4



Duration: 2:46
9 views
0


This vid helps get started w/ Self hosted Wordpress.

i. Setting up a self-hosted WordPress site using Docker can streamline the process, making it easier to manage dependencies and deploy your site. Here’s a step-by-step guide to help you get started:

### Prerequisites

1. **Docker**: Ensure Docker is installed on your machine. You can download and install it from [Docker's official website](https://www.docker.com/get-started).
2. **Docker Compose**: This tool is used to define and run multi-container Docker applications. It should be included with Docker Desktop installations, but you can also install it separately.

### Step-by-Step Guide

#### Step 1: Create a Project Directory

Create a directory for your WordPress project.

```bash
mkdir wordpress-docker
cd wordpress-docker
```

#### Step 2: Create a `docker-compose.yml` File

Create a `docker-compose.yml` file inside your project directory. This file will define the services needed for your WordPress site.

```yaml
version: '3.8'

services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wordpress:/var/www/html

db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: somerootpassword
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:
```

This `docker-compose.yml` file does the following:
- Defines a `wordpress` service using the official WordPress image.
- Exposes port 8080 on your host machine to port 80 in the container.
- Sets environment variables for the WordPress database connection.
- Defines a `db` service using the official MySQL 5.7 image.
- Sets environment variables for MySQL database credentials.
- Uses Docker volumes to persist data.

#### Step 3: Start the Docker Containers

Start the services defined in your `docker-compose.yml` file.

```bash
docker-compose up -d
```

This command will download the necessary images and start the WordPress and MySQL containers in detached mode.

#### Step 4: Complete the WordPress Installation

1. Open your web browser and navigate to `http://localhost:8080`.
2. Follow the WordPress installation steps:
- Choose your language.
- Enter your site title, username, password, and email address.
- Complete the installation.

#### Step 5: Manage Your WordPress Site

After the installation, you can manage your WordPress site by visiting `http://localhost:8080/wp-admin`.

### Managing Docker Containers

- **Stop the containers**:

```bash
docker-compose down
```

- **Restart the containers**:

```bash
docker-compose up -d
```

- **View logs**:

```bash
docker-compose logs -f
```

### Customizing Your Setup

- **Adding Themes and Plugins**: You can place your themes and plugins in the `./wordpress/wp-content` directory on your host machine.
- **Changing PHP Settings**: Create a custom `php.ini` file and mount it in your `docker-compose.yml` file.

```yaml
wordpress:
...
volumes:
- ./wordpress:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
```

### Backup and Restore

To back up your WordPress site and database:

- **Database Backup**:

```bash
docker exec CONTAINER_ID /usr/bin/mysqldump -u exampleuser --password=examplepass exampledb angled-bracket-here backup.sql
```

- **Files Backup**: Simply copy the `./wordpress` directory to your backup location.

To restore:

- **Database Restore**:

```bash
docker exec -i CONTAINER_ID /usr/bin/mysql -u exampleuser --password=examplepass exampledb angled-bracket-here backup.sql
```

- **Files Restore**: Copy your backup files back to the `./wordpress` directory.

### Conclusion

Using Docker to host a WordPress site offers many benefits, including ease of setup, isolation of services, and simplified management. By following the steps above, you can have a self-hosted WordPress site up and running quickly and efficiently.