diff --git a/docker/Dockerfile b/docker/Dockerfile index 0849a1a12..b0c0b8cb3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,6 +7,11 @@ WORKDIR /usr/src/app # Argument to pass in the supersonic version at build time ARG SUPERSONIC_VERSION +# Install necessary packages, including MySQL client +RUN apt-get update && \ + apt-get install -y mysql-client unzip && \ + rm -rf /var/lib/apt/lists/* + # Copy the supersonic standalone zip file into the container COPY assembly/build/supersonic-standalone-${SUPERSONIC_VERSION}.zip . diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..393dbccca --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,82 @@ +version: '3.8' + +services: + mysql: + image: mysql:8.0 + container_name: supersonic_mysql + environment: + MYSQL_ROOT_PASSWORD: root_password + MYSQL_DATABASE: ${DB_NAME} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} + ports: + - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql + networks: + - supersonic_network + dns: + - 8.8.8.8 + - 8.8.4.4 + + db_init: + image: supersonic:0.9.2-SNAPSHOT + container_name: supersonic_db_init + depends_on: + - mysql + networks: + - supersonic_network + command: > + sh -c " + sleep 30 && + if ! mysql -h mysql -u${DB_USERNAME} -p${DB_PASSWORD} -e 'use ${DB_NAME}; show tables;' | grep -q 's2_database'; then + mysql -h mysql -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME} < /usr/src/app/supersonic-standalone-0.9.2-SNAPSHOT/conf/schema-mysql.sql && + mysql -h mysql -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME} < /usr/src/app/supersonic-standalone-0.9.2-SNAPSHOT/conf/data-mysql.sql + else + echo 'Database already initialized.' + fi + " + environment: + DB_NAME: supersonic_db + DB_USERNAME: supersonic_user + DB_PASSWORD: supersonic_password + dns: + - 8.8.8.8 + - 8.8.4.4 + + chroma: + image: chromadb/chroma:latest + container_name: supersonic_chroma + ports: + - "8000:8000" + networks: + - supersonic_network + dns: + - 8.8.8.8 + - 8.8.4.4 + + + java_backend: + image: supersonic:0.9.2-SNAPSHOT + container_name: supersonic_java_backend + environment: + DB_NAME: supersonic_db + DB_USERNAME: supersonic_user + DB_PASSWORD: supersonic_password + ports: + - "9080:9080" + depends_on: + - mysql + - db_init + - chroma + networks: + - supersonic_network + dns: + - 8.8.8.8 + - 8.8.4.4 + +volumes: + mysql_data: + +networks: + supersonic_network: \ No newline at end of file