0
votes

I am using below codes but my local site is not able to connect to DB

docker run --name db -p 90:3306 --restart=always --network wp-mysql-network -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ssw0rd -v mysql-demo3:/var/lib/mysql -d mysql:latest

docker run -d --name wp-site1 --link db -p 85:80 -e WORDPRESS_HOST=db:90 --network wp-mysql-network -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ssw0rd -v wp-data-demo3:/var/www/html wordpress:latest

1
There's a lot wrong in your commands. You use the wrong variable names and your port number is wrong. Try to find an example online that works and modify it in small steps to suit your needs. - Hans Kilian
What error message (if any) do you get? - XouDo

1 Answers

0
votes

When you run something like

docker run -p 90:3306 you expose the internal port 3306 to the machine (machine running docker) port 90.

When you connect a container to another, you should use internal ports so

docker run -d --name wp-site1 \
    --link db -p 85:80 \
    -e WORDPRESS_DB_HOST=db:3306 \
    --network wp-mysql-network \
    -e WORDPRESS_DB_NAME=wordpress \
    -e WORDPRESS_DB_USER=wpuser \
    -e WORDPRESS_DB_PASSWORD=P@ssw0rd \
    -v wp-data-demo3:/var/www/html wordpress:latest

Moreover, in your case, you should only expose your frontend, not the backend (database).

If you're successful with wordpress on HTTP, I would suggest to have a look on Traefik to handle HTTPS connections. (an example below).

https://graspingtech.com/wordpress-docker-compose/

EDIT

  1. Create dependencies

    docker network create wp-mysql-network
    docker volume create mysql-demo3
    docker volume create wp-data-demo3
    
  2. Create database instance

    docker run --name db \
        --network wp-mysql-network \
        -v mysql-demo3:/var/lib/mysql \
        --restart=always \
        -e MYSQL_ROOT_PASSWORD=root \
        -e MYSQL_DATABASE=wordpress \
        -e MYSQL_USER=wpuser \
        -e MYSQL_PASSWORD=P@ssw0rd -d mysql:latest 
    
  3. Create the wordpress instance which is connected to db

    docker run -d --name wp-site1 \
        --link db -p 85:80 \
        -e WORDPRESS_DB_HOST=db:3306 \
        --network wp-mysql-network \
        -e WORDPRESS_DB_NAME=wordpress \
        -e WORDPRESS_DB_USER=wpuser \
        -e WORDPRESS_DB_PASSWORD=P@ssw0rd \
        -v wp-data-demo3:/var/www/html wordpress:latest
    
  4. Connect to you wordpress frontend with your web browser

    http://localhost:85