mysql in docker compose - docker

hi i'm new in docker and for practice created this project but when it's run with docker compose shows me below error:
wordpress | MySQL Connection Error: (1045) Access denied for user 'user1'#'172.19.0.4' (using password: NO)
docker-compose.yml:
version: '3.9'
services:
db:
image: mysql:latest
container_name: mysql
restart: always
command: "--default-authentication-plugin=mysql_native_password"
environment:
MYSQL_ROOT_PASSWORD: mjs
MYSQL_DATABASE: wpdb
MYSQL_USER: user1
MYSQL_PASSWORD: mjs
wordpress:
image: wordpress
container_name: wordpress
restart: always
volumes:
- ./wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wpdb
WORDPRESS_DB_USER: user1
WORDPRESS_DB_PASSWROD: mjs
ports:
- 8080:80
- 443:443
depends_on:
- db
phpmyadmin:
image: phpmyadmin:latest
restart: always
ports:
- 3333:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: mjs
I searched for stackoverflow but found nothing.
Thank you for your help

If you are not defining your db volume data is not persisting on restart. Just btw.
Furthermore it's a good practice to pin your image to a version like mysql:5.7.
Did you try that one here?
https://docs.docker.com/compose/wordpress/

Related

Having issue while running docker-compose up -d

version: '3.0'
services:
db:
image: mysql
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_USER: wordpress
MYSQL_PASSWORD: 12345
wordpress1:
depends_on:
-db
image: wordpress:latest
restart: always
ports:
-"8080:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_HOST: db:3306
volumes:
db_data:
Error as below-
ERROR: yaml.scanner.ScannerError: while scanning a simple key
in "./docker-compose.yml", line 21, column 3
could not find expected ':'
in "./docker-compose.yml", line 23, column 3
Can anyone please help me to resolve this issue? I am trying to resolve since past 1 hour but getting into errors one by one
The problem is probably in the definition of the wordpress1 service.
You need to add a space after the dash:
wordpress1:
depends_on:
- db
So instead of -db you need to have - db.
Edit:
The complete docker-compose.yml should probably look like this:
version: '3.0'
services:
db:
image: mysql
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_USER: wordpress
MYSQL_PASSWORD: 12345
wordpress1:
depends_on:
- db
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_HOST: db:3306
volumes:
db_data:
From docker documentation, the exact code you want to run:
https://docs.docker.com/compose/wordpress/

Connect to networked mysql docker container with local client

I have just followed a tutorial on using Docker. I started with installing different containers and when I got to mysql, i installed it by running
docker container run -d -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123456 mysql
After the container has been created, I have been able to connect to MySQL with Heidi, by using 127.0.0.1, root and 123456 as password.
I eventually moved forward with another tutorial on installing WordPress with docker.
https://www.youtube.com/watch?v=pYhLEV-sRpY
The yaml for setting up the containers is bellow. Everything works just fine, but when it comes to connecting to the database using Heidi, I just do not get what to do - what connection data to use or what to change in the yaml to be able to connect from local machine.
version: '3'
services:
# Database
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
# phpmyadmin
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
- wpsite
# Wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:
You should expose 3306 port to local machine. Then, you can connect to MySQL by using host=127.0.0.1.
Update the yaml file like this:
version: '3'
services:
# Database
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
...

Unable to log into mysql with phpmyadmin

I'm new to the docker world and maybe I'm missing something.
I created the following docker-compose file
version: '3.3'
services:
db:
image: mysql:latest
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
- wpsite
wp:
depends_on:
- db
image: andreccosta/wordpress-xdebug
volumes:
- ./wp:/var/www/html
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
XDEBUG_CONFIG: remote_host=172.17.0.1
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:
When i run it with docker-compose up everything goes well, but when I try to access localhost:8080 (path for phpmyadmin) and try to login i'm not able to connect to mysql.
If i try to enter the mysql container with
docker exec -t -i <conatiner_name> bash
and try to login to mysql i'm able to do it.
I used this same file on a different computer and everything works well.
I'm running docker on ubuntu.
UPDATE
I solved the issue by changing the version of the mysql image from latest to 5.7.27.

How Can Run Phpmyadmin, Mysql and Apache Tomcat with Docker-Compose File?

I am trying to run java web app. Thus, I must setup MySQL, phpmyadmin and Apache Tomcat for accessing website. I want to use the docker and its docker-compose application to make installation easier (If I may learn).
I could not set mysql and phpmyadmin applications to work together. If I can get past this first step, I will try to install tomcat.
This is my codes which is used(docker-compose.yml)
version: '2'
services:
db:
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: myDb
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
depends_on:
- db
links:
- db
I open the above codes with docker-compose up in the command line application.
I'm going to http://localhost:8080/ page, I'm typing admin for Username, 12345 for password.
The errors I get are:
Cannot log in to MySQL server
mysqli_real_connect (): The server requested authentication method
mysqli_real_connect (): (HY000 / 2054): The server requested authentication method
How can I install the applications (mysql, phpmyadmin, tomcat) with docker-compose?
Currently phpmyadmin and MySQL can work together. It is solved.
PLAN A:
This is my docker-compose.yml file:
version: '2'
services:
db:
container_name: db
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: myDb
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
command: --default-authentication-plugin=mysql_native_password
phpmyadmin:
depends_on:
- db
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
PMA_HOST: db
Now, you can go into MySQL via phpmyadmin at http://localhost:8080
It can also be solved by this method.
PLAN B: This is my docker-compose.yml file:
version: '2'
services:
db:
container_name: db
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: myDb
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
depends_on:
- db
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
MYSQL_USER: admin
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
PMA_HOST: db
Command line's commands:
$ docker stop phpmyadmin
$ docker exec -it db bash
$ mysql -u root -proot
$ ALTER USER root IDENTIFIED WITH mysql_native_password BY 'root';
$ exit
$ exit
$ docker start phpmyadmin
Now, you can go into MySQL via phpmyadmin at http://localhost:8080
Reference: phpMyAdmin on MySQL 8.0
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: 1234
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8080:80
environment:
MYSQL_ROOT_PASSWORD: 1234
links:
- db

Docker volume must be a mapping, not a string

I have the following file at ./wordpress/docker-compose.yaml:
version: '3.3'
serivces:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
evironment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
volumes:
- ./:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data
When I run cd ./wordpress && docker-compose up -d I get the following error:
ERROR: In file './docker-compose.yaml', volume must be a mapping, not a string.
Can anyone tell me what I'm doing wrong?
There are certain typo errors first of, like serivces, evironment. They should spell services and environment. Also for the "... not string" error, just append ":" after your volume name like below
volumes:
db_data:
I had the same problem just now and the key was the indentation of the volume name i.e. db_data.
I fixed it by putting the volume name on the same level of indentation as the depends_on under the wordpress service in the example above. (hit TAB)
volumes:
mydata:
vs
volumes:
mydata:
that's will fix it and it works for me
volumes:
db_data:
driver: local
version: '3.3'
serivces:
db:
image: mysql:5.7
command: bash -c "mkdir -p /var/lib/mysql/"
volumes:
- db_data:/var/lib/mysql/
restart: always
evironment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
volumes:
- ./:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data: {}
save as docker-compose.yml
cd wordpress
docker-compose up

Resources