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
Add dev.dockerfile
:
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 sql_user
:
GRANT ALL PRIVILEGES ON *.* TO 'sql_user'@'%';
Now, run docker-compose build
, then docker-compose up
.
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.