wasp256
wasp256

Reputation: 6252

Setup Docker containers for existing Wordpress site

I'm trying to setup a dev environment for an existing wordpress website hosted on cPanel.

I've exported the test data from the existing pre-production database to be imported into the mysql running in one of the containers.

version: '3.3'

services:
  db:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql


  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /local/path/to/wordpress/src/:/var/www/html

volumes:
    db_data: {}

everything starts up fine. Now I'm inserting the db dump into the mysql db in the container

cat dump.sql | docker exec -i docker_db_1 /usr/bin/mysql -u wordpress --password=wordpress wordpress

which finishes without error. When trying to access the website now on localhost:8000 the Apache Ubuntu default page pops up but I can't see anything from the existing wordpress site.

Upvotes: 1

Views: 944

Answers (1)

wasp256
wasp256

Reputation: 6252

This setup worked for me

docker-compose.yml

version: '3.6' services:

wordpress:
  image: wordpress:${WORDPRESS_VERSION}
  container_name: wordpress
  volumes:
    - ${WORDPRESS_DATA_DIR}:/var/www/html
  environment:
    - WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME}
    - WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST}
    - WORDPRESS_DB_USER=${WORDPRESS_DB_USER}
    - WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD}
  depends_on:
    - mysql
  restart: always

mysql:
  image: mysql:${MYSQLDB_VERSION}
  container_name: mysql
  command: --default-authentication-plugin=mysql_native_password
  restart: always
  environment:
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - MYSQL_USER=${MYSQL_USER}
    - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    - MYSQL_DATABASE=${MYSQL_DATABASE}
  ports:
    - 3306:3306
  volumes:
    - ./mysql:/var/lib/mysql
    - ./mysql_config:/tmp/mysql_config

nginx:
  image: nginx:${NGINX_VERSION:-latest}
  container_name: nginx
  ports:
    - '80:80'
    - '443:443'
  volumes:
    - ${NGINX_CONF_DIR}:/etc/nginx/conf.d
    - ${NGINX_LOG_DIR}:/var/log/nginx
    - ${WORDPRESS_DATA_DIR}:/var/www/html
  depends_on:
    - wordpress
  restart: always

All used variables are set as environment variables first. To connect to any container with use the following command:

docker exec -i -t <wordpress|mysql|nginx> /bin/bash

Upvotes: 1

Related Questions