I have a .sql file that I want to run to fill the DB with data when I start up the container. How do I do it?
My docker scripts are below:
docker-compose.yml
version: '3'
services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./src:/var/www/
    ports:
      - 8080:80
    depends_on:
      - mysql
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: userpassword
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data:
Dockerfile
FROM php:8.1-apache
COPY src/ /var/www/
I have tried using this line in my Dockerfile
RUN mysql -usecret -pmydatabase mysql < /var/www/DB_Setup.sql
But I get the error
/bin/sh: 1: mysql: not found ERROR: Service 'php' failed to build: The command '/bin/sh -c mysql -usecret -pmydatabase mysql < /var/www/DB_Setup.sql' returned a non-zero code: 127
So I guess this is because the php container doesn't have mysql installed?
I guess I could use a Dockerfile with contents like this? But I'm not sure how to add it to docker-compose.yml? Taken from here
FROM mysql:latest
MAINTAINER me
ENV MYSQL_DATABASE=mysql \
    MYSQL_ROOT_PASSWORD=mydatabase
ADD script.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Thanks.
 
    