Start with standard docker-compose file.
version: "3.7" services: mariadb: build: context: . dockerfile: dev.dockerfile restart: always environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: db_name MYSQL_USER: sql_user MYSQL_PASSWORD: password ports: - 3306:3306
FROM mariadb:latest ADD init.sql /docker-entrypoint-initdb.d/ddl.sql
Finally, add your
init.sql file. Let’s give all privileges to our
GRANT ALL PRIVILEGES ON *.* TO 'sql_user'@'%';
docker-compose build, then
Access from another container
If you want to access the database container from other containers, while running them separately, you can specify
host.docker.internal as the address of your database.
If you’re on linux, then you need docker engine >= 20.03, and you need to add to your docker-compose file:
my_app: extra_hosts: - "host.docker.internal:host-gateway"
If you’re are on Mac ^^ will break your setup unless you are at least on Docker Desktop for Mac 3.3.0. See Support host.docker.internal DNS name to host · Issue #264 · docker/for-linux (github.com) for details.