From ad8770f12cb886384c27bea8f4d104358661d340 Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Fri, 7 Apr 2023 18:41:03 +0200 Subject: [PATCH] fix: docker-compose enviroment values --- docker-compose.prod.yml | 26 ++++++++++++++------------ docker-compose.yml | 10 +++++----- docker/mysql/Dockerfile | 7 +++++++ docker/mysql/docker-entrypoint.sh | 18 ++++++++++++++++++ docker/mysql/init.sql | 2 ++ 5 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 docker/mysql/docker-entrypoint.sh create mode 100644 docker/mysql/init.sql diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index cb8d896c7..64b2d3aac 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -77,22 +77,24 @@ services: build: context: ./ dockerfile: docker/migration/Dockerfile - args: - - DB_HOST=mysql - - DB_USER=${DB_USER} - - DB_PASSWORD=${DB_PASSWORD} - - DB_CHARSET=${DB_CHARSET} - - SYSTEM_DB_NAME=${SYSTEM_DB_NAME} + environment: + - DB_HOST=mysql + - DB_USER=${DB_USER} + - DB_PASSWORD=${DB_PASSWORD} + - DB_CHARSET=${DB_CHARSET} + - SYSTEM_DB_NAME=${SYSTEM_DB_NAME} + depends_on: + - mysql mysql: container_name: bigcapital-mysql build: context: ./docker/mysql - args: - - MYSQL_DATABASE=${SYSTEM_DB_NAME} - - MYSQL_USER=${DB_NAME} - - MYSQL_PASSWORD=${DB_PASSWORD} - - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} + environment: + - MYSQL_DATABASE=${SYSTEM_DB_NAME} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} volumes: - mysql:/var/lib/mysql expose: @@ -127,4 +129,4 @@ volumes: redis: name: bigcapital_prod_redis - driver: local \ No newline at end of file + driver: local diff --git a/docker-compose.yml b/docker-compose.yml index eff8b3278..324dc5517 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,11 +9,11 @@ services: mysql: build: context: ./docker/mysql - args: - - MYSQL_DATABASE=${SYSTEM_DB_NAME} - - MYSQL_USER=${DB_NAME} - - MYSQL_PASSWORD=${DB_PASSWORD} - - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} + environment: + - MYSQL_DATABASE=${SYSTEM_DB_NAME} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} volumes: - mysql:/var/lib/mysql expose: diff --git a/docker/mysql/Dockerfile b/docker/mysql/Dockerfile index 5030a1699..c36e469f7 100644 --- a/docker/mysql/Dockerfile +++ b/docker/mysql/Dockerfile @@ -1,5 +1,6 @@ FROM mysql:5.7 +USER root ADD my.cnf /etc/mysql/conf.d/my.cnf ARG MYSQL_DATABASE=default_database @@ -12,5 +13,11 @@ ENV MYSQL_USER=$MYSQL_USER ENV MYSQL_PASSWORD=$MYSQL_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD +COPY ./init.sql /scripts/init.template.sql +COPY ./docker-entrypoint.sh /docker-entrypoint-initdb.d/docker-initialize.sh + +RUN chown -R mysql:root /docker-entrypoint-initdb.d +RUN chown -R mysql:root /scripts + CMD ["mysqld"] EXPOSE 3306 \ No newline at end of file diff --git a/docker/mysql/docker-entrypoint.sh b/docker/mysql/docker-entrypoint.sh new file mode 100644 index 000000000..dd756910b --- /dev/null +++ b/docker/mysql/docker-entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# chmod u+rwx /scripts/init.template.sql +cp /scripts/init.template.sql /scripts/init.sql + +# Replace environment variables in SQL files with their values +if [ -n "$MYSQL_USER" ]; then + sed -i "s/{MYSQL_USER}/$MYSQL_USER/g" /scripts/init.sql +fi +if [ -n "$MYSQL_PASSWORD" ]; then + sed -i "s/{MYSQL_PASSWORD}/$MYSQL_PASSWORD/g" /scripts/init.sql +fi +if [ -n "$MYSQL_DATABASE" ]; then + sed -i "s/{MYSQL_DATABASE}/$MYSQL_DATABASE/g" /scripts/init.sql +fi + +# Execute SQL file +mysql -u root -p$MYSQL_ROOT_PASSWORD < /scripts/init.sql \ No newline at end of file diff --git a/docker/mysql/init.sql b/docker/mysql/init.sql new file mode 100644 index 000000000..3110f964c --- /dev/null +++ b/docker/mysql/init.sql @@ -0,0 +1,2 @@ +GRANT ALL PRIVILEGES ON *.* TO '{MYSQL_USER}'@'%' IDENTIFIED BY '{MYSQL_PASSWORD}' WITH GRANT OPTION; +FLUSH PRIVILEGES; \ No newline at end of file