I'm setting up a CI using Docker using Github workflows for my Symfony project. I use for this an image of PHP8.1-fpm and Pgsql-13-alpine.
The docker-compose.test.yaml :
version: '3.3'
services:
phptest:
build: ./devops/docker/tests/docker/php
volumes:
- .:/var/www:delegated
links:
- dbtest
networks:
- test
dbtest:
image: postgres:${POSTGRES_VERSION:-13}-alpine
environment:
POSTGRES_DB: test
POSTGRES_PASSWORD: test
POSTGRES_USER: test
ports:
- 5431:5432
networks:
- test
networks:
test:
The .env.test:
# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
DATABASE_URL=postgresql://test:test@dbtest:5431/test?serverVersion=13&charset=utf8
The PHP container works fine for the others tests and pdo_pgsql is installed inside my Dockerfile.
My Makefile looks like this :
DOCKER_COMPOSE = docker-compose
DOCKER_TEST = $(DOCKER_COMPOSE) -f docker-compose.test.yaml run --rm
.PHONY: test
test: ##@ Execute les tests
$(DOCKER_TEST) phptest bin/console doctrine:schema:validate --skip-sync --env=test
$(DOCKER_TEST) phptest bin/console doctrine:schema:update --force --env=test
When I tried to update the database schema I have this error :
An exception occurred in the driver: SQLSTATE[08006] [7] could not connect to server: Connection refused
Is the server running on host "dbtest" (192.168.208.2) and accepting TCP/IP connections on port 5431?
I tried to change the .env.test with 127.0.0.1 instead dbtest too but same error.
I tried a loot of fix by different topics I found without success. Someone has an idea ?
Thanks by advance
CodePudding user response:
You are mapping port 5431 on your host machine to the 5432 port on the dbtest container. But phptest is connecting to dbtest directly, so you should use the 5432 port instead.
DATABASE_URL=postgresql://test:test@dbtest:5432/test?serverVersion=13&charset=utf8
