I have my db service:
...
mysql-server:
container_name: silos-database
init: true
restart: always
build:
context: .
dockerfile: Dockerfile-db
environment:
- MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD}
- MYSQL_DATABASE=${DATABASE}
- MYSQL_USER=${USER}
- MYSQL_PASSWORD=${USER_PASSWORD}
ports:
- target: 3036
published: 3036
networks:
- backend-net
volumes:
- type: volume
source: db_vol
target: /var/lib/mysql
...
This is my Dockerfile
FROM mysql:latest
The init.sql file contain same tables that my database must have
...
-- users data
CREATE TABLE IF NOT EXISTS users (
email VARCHAR(128) PRIMARY KEY,
username VARCHAR(64) UNIQUE,
-- password is SHA256 hashed, so 64 characters
password CHAR(64) NOT NULL
);
CREATE TABLE IF NOT EXISTS sessions (
email VARCHAR(128) PRIMARY KEY,
token TEXT NOT NULL,
expireDate BIGINT(13) NOT NULL,
FOREIGN KEY (email) REFERENCES users(email) ON UPDATE CASCADE ON DELETE CASCADE
);
...
How can I build a service with the content of init.sql file already inside the service?