SQLSTATE[HY000] [2002] No such file or directory Laravel and Docker - mysql

# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- meilisearch
- mailhog
- selenium
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sail-redis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
meilisearch:
image: 'getmeili/meilisearch:latest'
ports:
- '${FORWARD_MEILISEARCH_PORT:-7700}:7700'
volumes:
- 'sail-meilisearch:/meili_data'
networks:
- sail
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--spider", "http://localhost:7700/health"]
retries: 3
timeout: 5s
mailhog:
image: 'mailhog/mailhog:latest'
ports:
- '${FORWARD_MAILHOG_PORT:-1025}:1025'
- '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
selenium:
image: 'selenium/standalone-chrome'
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
sail-redis:
driver: local
sail-meilisearch:
driver: local
In ENV.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=luckybingo
DB_USERNAME=root
DB_PASSWORD=secret
I tried to set DB_HOST as localhost and mysql(as it is in Docker), but nothing solved my problem. Mysql server is running in docker, and when I do migrations in database it works, but when I try to register user, I am getting
SQLSTATE[HY000] [2002] Connection refused
SELECT count(*) AS aggregate FROM `users` WHERE `email` = test#gmail.com
What else should I do? I cleared cache and config cache. I have no idea what to do else.

I solved it by php artisan swoole:http start and I registered through that link http://127.0.0.1:1215

Related

Laravel Sail Docker MySQL not connecting

I am trying to access a database through an laravel app that is being deployed through a docker container but for some reason I get the following message:
SQLSTATE[HY000] [2002] Connection refused
SELECT * FROM `posts`
The database has a table named posts and I'm trying to access from localhost/posts.
The blade template for /posts is the following:
#extends('app')
#section('content')
<h1>Posts index page</h1>
#forelse ($posts as $post)
<h2>{{ $post->title }}</h2>
#empty
<h2>No posts!</h2>
#endforelse
#endsection
The Route in web.php responsible for /posts is this one:
Route::resource('/posts', PostController::class)->only(['index', 'store']);
And the index function of the PostController is this one:
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
My .env file looks like this:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:1HEk/HaN8IL/wV8q4DCzpvmM/cYRDvGAIe+0DxS9ggo=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=laravel_essentials_app
DB_USERNAME=sail
DB_PASSWORD=password
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=memcached
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello#example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
My docker-compose.yml file looks like this:
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3307}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "${DB_HOST}"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sail-redis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
sail-redis:
driver: local
My operating system is Windows 11 and I'm running MySQL Workbench on it. That is why I am exposing 3307 port instead of 3306.
With the current setup I can run php artisan migrate without a problem from wsl terminal.
What can I do in order to access posts from localhost/posts without getting Connection refused error?
SOLUTION
Solved it by changing DB_HOST=mysql in .env but also the DB_PORT to 3306.
EDITED .env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel_essentials_app
DB_USERNAME=sail
DB_PASSWORD=password
Use mysql as DB_HOST value in your .env file

Keycloack with mysql and docker-compose not working

I'm trying to create a docker-compose to run keycloak with mysql.
But my keycloack keep exiting with this error: Failed to connect to database
This is the full error
01:04:39,962 FATAL [org.keycloak.services] (ServerService Thread Pool -- 56) Error during startup: java.lang.RuntimeException: Failed to connect to database
at org.keycloak.keycloak-model-jpa#18.0.0//org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFactory.java:420)
at org.keycloak.keycloak-model-jpa#18.0.0//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lazyInit(LiquibaseDBLockProvider.java:65)
at org.keycloak.keycloak-model-jpa#18.0.0//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lambda$waitForLock$2(LiquibaseDBLockProvider.java:96)
at org.keycloak.keycloak-server-spi-private#18.0.0//org.keycloak.models.utils.KeycloakModelUtils.suspendJtaTransaction(KeycloakModelUtils.java:756)
at org.keycloak.keycloak-model-jpa#18.0.0//org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.waitForLock(LiquibaseDBLockProvider.java:94)
at org.keycloak.keycloak-services#18.0.0//org.keycloak.services.resources.KeycloakApplication$1.run(KeycloakApplication.java:136)
at org.keycloak.keycloak-server-spi-private#18.0.0//org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:242)
at org.keycloak.keycloak-services#18.0.0//org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:130)
at org.keycloak.keycloak-wildfly-extensions#18.0.0//org.keycloak.provider.wildfly.WildflyPlatform.onStartup(WildflyPlatform.java:36)
at org.keycloak.keycloak-services#18.0.0//org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:116)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ConstructorInjectorImpl.constructOutsideRequest(ConstructorInjectorImpl.java:225)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:209)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.providerfactory.Utils.createProviderInstance(Utils.java:102)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.createProviderInstance(ResteasyProviderFactoryImpl.java:1385)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.createApplication(ResteasyDeploymentImpl.java:418)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.initializeObjects(ResteasyDeploymentImpl.java:265)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.startInternal(ResteasyDeploymentImpl.java:137)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.core.ResteasyDeploymentImpl.start(ResteasyDeploymentImpl.java:121)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:144)
at org.jboss.resteasy.resteasy-core#4.7.4.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:42)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
at org.wildfly.security.elytron-web.undertow-server-servlet#1.10.1.Final//org.wildfly.elytron.web.undertow.server.servlet.RunAsLifecycleInterceptor.doIt(RunAsLifecycleInterceptor.java:70)
at org.wildfly.security.elytron-web.undertow-server-servlet#1.10.1.Final//org.wildfly.elytron.web.undertow.server.servlet.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:76)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:309)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:145)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:588)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:559)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1544)
at io.undertow.servlet#2.2.16.Final//io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:601)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:106)
at org.wildfly.extension.undertow#26.1.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:87)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.jboss.threads#2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads#2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads#2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads#2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:829)
at org.jboss.threads#2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/KeycloakDS
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:159)
at org.jboss.as.connector#26.1.0.Final//org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
at org.keycloak.keycloak-model-jpa#18.0.0//org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFactory.java:414)
... 48 more
Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/KeycloakDS
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:690)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:440)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:151)
... 50 more
Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:364)
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:371)
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:287)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1328)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:505)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:640)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:605)
at org.jboss.ironjacamar.impl#1.5.3.Final//org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
... 53 more
Caused by: java.sql.SQLException: Access denied for user 'keycloak'#'192.168.32.3' (using password: YES)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
at com.mysql.jdbc#8.0.22//com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
at org.jboss.ironjacamar.jdbcadapters#1.5.3.Final//org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:335)
My docker-compose.yaml file is like this
version: '3'
services:
db:
image: mysql:5.7
container_name: keycloak_mysql
restart: always
tty: true
ports:
- 33306:3306
volumes:
- ./.docker/dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=keycloak
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=keycloak
- MYSQL_PASSWORD=password
app:
image: quay.io/keycloak/keycloak:legacy
container_name: keycloak
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
- DB_ADDR=db
- DB_VENDOR=MYSQL
- DB_DATABASE=keycloak
- DB_PORT=3306
- DB_USER=keycloak
- DB_PASSWORD=password
ports:
- 8080:8080
depends_on:
- db
Edi1:
I realized that if I change the volume to local it works
version: '3'
volumes:
mysql_data:
driver: local
services:
db:
image: mysql:5.7
container_name: keycloak_mysql
restart: always
tty: true
ports:
- 33306:3306
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_DATABASE=keycloak
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=keycloak
- MYSQL_PASSWORD=password
app:
image: quay.io/keycloak/keycloak:legacy
container_name: keycloak
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
- DB_ADDR=db
- DB_VENDOR=MYSQL
- DB_DATABASE=keycloak
- DB_PORT=3306
- DB_USER=keycloak
- DB_PASSWORD=password
ports:
- 8080:8080
depends_on:
- db
But I wish to use with a folder inside my repo, like on the original yam ./.docker/dbdata

Multiple Hosts wordpress docker with Traefik

Hello !
I have a question about Traefik using Docker and docker-compose,
Indeed, I want to use traefik as a reverse proxy to redirect several services (in my case, several wordpress instances).
Traefik works and I can access to a wordress instance (Wordpress, Mysql, PhpMyadmin) without any problem (with automatic https redirection),
However, when I launch another Wordpress stack at the same time (WP, Mysql, PhpMyadmin), I can't access any service, I get a 404 error.
Here is my traefik.yaml :
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
http:
tls:
certResolver: myresolver
middlewares:
- SecHeaders#file
api:
dashboard: true
accessLog: {}
providers:
docker:
exposedByDefault: false
file:
directory: /etc/traefik/custom/
watch: true
certificatesResolvers:
myresolver:
acme:
email: "mail#domain"
storage: "/letsencrypt/acme.json"
tlsChallenge: {}
Here is my docker-compose.yaml for traefik :
version: "3.7"
services:
reverse_proxy:
image: traefik:2.2
restart: unless-stopped
command:
--api.insecure=true
--providers.docker
--entrypoints.web.address=:80
ports:
# The HTTP port
- "80:80"
# The HTTPS port
- "443:443"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
# traefik static configuration
- ./traefik.yaml:/etc/traefik/traefik.yaml:ro
# custom folder with dynamic configuration
- ./custom:/etc/traefik/custom:ro
# ssl volumes to store acme.json
- certs:/letsencrypt
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-api.rule=Host(`traefik.DOMAIN`)"
- "traefik.http.routers.traefik-api.service=api#internal"
networks:
- default
volumes:
certs:
networks:
default:
external:
name: gateway
Here is my docker-compose.yaml for wordpress:
version: '3'
services:
database:
image: mysql:5.7
container_name: bdd
volumes:
- ./BDD/file.sql:/docker-entrypoint-initdb.d/init.sql
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: passwd
MYSQL_DATABASE: db
MYSQL_USER: user-db
MYSQL_PASSWORD: passwd-bdd
networks:
- network1
labels:
- traefik.enable=false
phpmyadmin:
depends_on:
- database
image: phpmyadmin
container_name: pma
restart: always
environment:
PMA_HOST: database
MYSQL_PASSWORD: passwd-bdd
MYSQL_ROOT_PASSWORD: passwd
networks:
- default
- network1
labels:
traefik.enable: true
traefik.http.routers.phpmyadmin.entrypoints: websecure
traefik.http.routers.phpmyadmin.rule: 'Host(`pma.MY_DOMAIN`)'
wordpress:
depends_on:
- database
image: wordpress:5.7.1-php7.3
container_name: wordpress
restart: always
volumes:
- ./WORDPRESS:/var/www/html
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: user-db
WORDPRESS_DB_PASSWORD: passwd-bdd
WORDPRESS_DB_NAME: db
WORDPRESS_TABLE_PREFIX: wp_
networks:
- default
- network1
labels:
traefik.enable: true
traefik.docker.network: default
traefik.http.routers.wordpress.entrypoints: websecure
traefik.http.routers.wordpress.rule: 'Host(`mas.MY_DOMAIN`)'
networks:
default:
external:
name: gateway
network1:
internal: true
volumes:
db_data:
Here is my docker-compose.yaml for the 2nd wordpress:
version: '3'
services:
database2:
image: mysql:5.7
container_name: bdd2
volumes:
- ./SQL/file2.sql:/docker-entrypoint-initdb.d/init.sql
- db_data2:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: passwd2
MYSQL_DATABASE: db2
MYSQL_USER: user-db2
MYSQL_PASSWORD: passwd-bdd2
networks:
- network2
phpmyadmin2:
depends_on:
- database2
image: phpmyadmin
container_name: pma2
restart: always
environment:
PMA_HOST: database2
MYSQL_PASSWORD: passwd-bdd2
MYSQL_ROOT_PASSWORD: passwd2
networks:
- default
- network2
labels:
traefik.enable: true
traefik.http.routers.phpmyadmin.entrypoints: websecure
traefik.http.routers.phpmyadmin.rule: 'Host(`pma.MY_DOMAIN2`)'
wordpress2:
depends_on:
- database2
image: wordpress:5.7.1-php7.3
container_name: wordpress2
restart: always
volumes:
- ./WP:/var/www/html
environment:
WORDPRESS_DB_HOST: database2:3306
WORDPRESS_DB_USER: user-db2
WORDPRESS_DB_PASSWORD: passwd-bdd2
WORDPRESS_DB_NAME: db2
WORDPRESS_TABLE_PREFIX: wp_
networks:
- default
- network2
labels:
traefik.enable: true
traefik.docker.network: default
traefik.http.routers.wordpress.entrypoints: websecure
traefik.http.routers.wordpress.rule: 'Host(`wordpress.MY_DOMAIN2`)'
networks:
default:
external:
name: gateway
network2:
internal: true
volumes:
db_data2:
Thanks for your help !
You are using the same router names for both the stacks i.e. phpmyadmin and wordpress. The router names should be unique for each stack.
So, if your docker-compose.yaml for first word press is like this
version: '3'
services:
database:
image: mysql:5.7
container_name: bdd
volumes:
- ./BDD/file.sql:/docker-entrypoint-initdb.d/init.sql
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: passwd
MYSQL_DATABASE: db
MYSQL_USER: user-db
MYSQL_PASSWORD: passwd-bdd
networks:
- network1
labels:
- traefik.enable=false
phpmyadmin:
depends_on:
- database
image: phpmyadmin
container_name: pma
restart: always
environment:
PMA_HOST: database
MYSQL_PASSWORD: passwd-bdd
MYSQL_ROOT_PASSWORD: passwd
networks:
- default
- network1
labels:
traefik.enable: true
traefik.http.routers.phpmyadmin.entrypoints: websecure
traefik.http.routers.phpmyadmin.rule: 'Host(`pma.MY_DOMAIN`)'
wordpress:
depends_on:
- database
image: wordpress:5.7.1-php7.3
container_name: wordpress
restart: always
volumes:
- ./WORDPRESS:/var/www/html
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: user-db
WORDPRESS_DB_PASSWORD: passwd-bdd
WORDPRESS_DB_NAME: db
WORDPRESS_TABLE_PREFIX: wp_
networks:
- default
- network1
labels:
traefik.enable: true
traefik.docker.network: default
traefik.http.routers.wordpress.entrypoints: websecure
traefik.http.routers.wordpress.rule: 'Host(`mas.MY_DOMAIN`)'
networks:
default:
external:
name: gateway
network1:
internal: true
volumes:
db_data:
Then the second docker-compose.yml should look like this
version: '3'
services:
database2:
image: mysql:5.7
container_name: bdd2
volumes:
- ./SQL/file2.sql:/docker-entrypoint-initdb.d/init.sql
- db_data2:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: passwd2
MYSQL_DATABASE: db2
MYSQL_USER: user-db2
MYSQL_PASSWORD: passwd-bdd2
networks:
- network2
phpmyadmin2:
depends_on:
- database2
image: phpmyadmin
container_name: pma2
restart: always
environment:
PMA_HOST: database2
MYSQL_PASSWORD: passwd-bdd2
MYSQL_ROOT_PASSWORD: passwd2
networks:
- default
- network2
labels:
traefik.enable: true
traefik.http.routers.phpmyadmin-second.entrypoints: websecure
traefik.http.routers.phpmyadmin-second.rule: 'Host(`pma.MY_DOMAIN2`)'
wordpress2:
depends_on:
- database2
image: wordpress:5.7.1-php7.3
container_name: wordpress2
restart: always
volumes:
- ./WP:/var/www/html
environment:
WORDPRESS_DB_HOST: database2:3306
WORDPRESS_DB_USER: user-db2
WORDPRESS_DB_PASSWORD: passwd-bdd2
WORDPRESS_DB_NAME: db2
WORDPRESS_TABLE_PREFIX: wp_
networks:
- default
- network2
labels:
traefik.enable: true
traefik.docker.network: default
traefik.http.routers.wordpress-second.entrypoints: websecure
traefik.http.routers.wordpress-second.rule: 'Host(`wordpress.MY_DOMAIN2`)'
networks:
default:
external:
name: gateway
network2:
internal: true
volumes:
db_data2:

Laravel 8 Database Connection refused MacBook

I have a huge problem which prevents me from working on the project. I can't connect to the database with my Mac.
Error: connection refused
Actually, I'm on Xampp with the IP Address : 192.168.64.2 and MySQL run on localhost:8080 ->80(Over SSH).
The Laravel project isn't inside Xampp files, just on my desktop. It run on :
Location of my project
My .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=80
DB_DATABASE=cartographie
DB_USERNAME=root
DB_PASSWORD=
I think I have a lead, I managed to understand the usefulness of Docker.
So I'll put the docker-compose.yml file below to enlighten you:
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
# - selenium
# selenium:
# image: 'selenium/standalone-chrome'
# volumes:
# - '/dev/shm:/dev/shm'
# networks:
# - sail
# depends_on:
# - laravel.test
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: 'cartographie'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'root'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
# memcached:
# image: 'memcached:alpine'
# ports:
# - '11211:11211'
# networks:
# - sail
mailhog:
image: 'mailhog/mailhog:latest'
ports:
- 1025:1025
- 8025:8025
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
.env
APP_NAME="Agents Centrimex"
APP_ENV=local
APP_KEY=base64:WKnFZG6Qz2rEsYY+kk9kIl2Fw8l5HBa97edgqqjx4d0=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cartographie
DB_USERNAME=root
DB_PASSWORD=root
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.office365.com
MAIL_PORT=587
MAIL_USERNAME=support#centrimex.com
MAIL_PASSWORD=Vitrolles13127
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=support#centrimex.com
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

ER_NOT_SUPPORTED_AUTH_MODE: while dockerize sails.js app with mysql

I am trying to dockerize a sails.js app which is using mysql image, but I am getting an error. I tried many solutions from stackoverflow and github but non have worked. And I dont have any experience with docker. Its my client requirement to work with it. Here is the code of my docker-compose.yml
version: '3'
services:
sailsjs:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:1337
volumes:
- .:/usr/src/app
mysqlsails:
image: mysql
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE: pricing_engine
MYSQL_USER: root
MYSQL_PASSWORD:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
And datastores.js
module.exports.datastores = {
default: {
adapter: require('sails-mysql'),
host: 'mysqlsails',
user: 'root',
password: '',
database: 'pricing_engine',
insecureAuth : true
},
};