fix permission and trouble on mysql docker
This commit is contained in:
@@ -63,7 +63,8 @@ RUN mkdir -p /var/www/html/storage/logs \
|
|||||||
&& mkdir -p /var/www/html/bootstrap/cache \
|
&& mkdir -p /var/www/html/bootstrap/cache \
|
||||||
&& chown -R www-data:www-data /var/www/html \
|
&& chown -R www-data:www-data /var/www/html \
|
||||||
&& chmod -R 775 /var/www/html/storage \
|
&& chmod -R 775 /var/www/html/storage \
|
||||||
&& chmod -R 775 /var/www/html/bootstrap/cache
|
&& chmod -R 775 /var/www/html/bootstrap/cache \
|
||||||
|
&& chmod -R 755 /var/www/html/public
|
||||||
|
|
||||||
# Create nginx config
|
# Create nginx config
|
||||||
COPY ./docker/nginx.conf /etc/nginx/sites-available/default
|
COPY ./docker/nginx.conf /etc/nginx/sites-available/default
|
||||||
|
|||||||
@@ -71,7 +71,8 @@ RUN mkdir -p /var/www/html/storage/logs \
|
|||||||
&& mkdir -p /var/www/html/bootstrap/cache \
|
&& mkdir -p /var/www/html/bootstrap/cache \
|
||||||
&& chown -R www-data:www-data /var/www/html \
|
&& chown -R www-data:www-data /var/www/html \
|
||||||
&& chmod -R 775 /var/www/html/storage \
|
&& chmod -R 775 /var/www/html/storage \
|
||||||
&& chmod -R 775 /var/www/html/bootstrap/cache
|
&& chmod -R 775 /var/www/html/bootstrap/cache \
|
||||||
|
&& chmod -R 755 /var/www/html/public
|
||||||
|
|
||||||
# Create nginx config for development
|
# Create nginx config for development
|
||||||
COPY ./docker/nginx.dev.conf /etc/nginx/sites-available/default
|
COPY ./docker/nginx.dev.conf /etc/nginx/sites-available/default
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./storage:/var/www/html/storage
|
- ./storage:/var/www/html/storage
|
||||||
- ./bootstrap/cache:/var/www/html/bootstrap/cache
|
- ./bootstrap/cache:/var/www/html/bootstrap/cache
|
||||||
|
- ./docker/php.ini:/usr/local/etc/php/conf.d/local.ini
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
environment:
|
environment:
|
||||||
@@ -22,26 +23,28 @@ services:
|
|||||||
|
|
||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mysql:8.0
|
||||||
|
platform: linux/amd64
|
||||||
container_name: ckb-mysql-prod
|
container_name: ckb-mysql-prod
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
MYSQL_DATABASE: ckb_production
|
MYSQL_DATABASE: ${DB_DATABASE:-ckb_production}
|
||||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-rootpassword}
|
||||||
MYSQL_PASSWORD: ${DB_PASSWORD}
|
MYSQL_PASSWORD: ${DB_PASSWORD:-password}
|
||||||
MYSQL_USER: ${DB_USERNAME}
|
MYSQL_USER: ${DB_USERNAME:-laravel}
|
||||||
volumes:
|
volumes:
|
||||||
- mysql_data:/var/lib/mysql
|
- mysql_data:/var/lib/mysql
|
||||||
- ./docker/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
|
- ./docker/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
networks:
|
networks:
|
||||||
- ckb-network
|
- ckb-network
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
container_name: ckb-redis-prod
|
container_name: ckb-redis-prod
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
|
command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass $REDIS_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,87 +1,94 @@
|
|||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile.dev
|
dockerfile: Dockerfile.dev
|
||||||
container_name: ckb-app-dev
|
container_name: ckb-app-dev
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
working_dir: /var/www/html
|
working_dir: /var/www/html
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/var/www/html
|
- ./:/var/www/html
|
||||||
- ./docker/php.ini:/usr/local/etc/php/conf.d/local.ini
|
- ./docker/php.ini:/usr/local/etc/php/conf.d/local.ini
|
||||||
- storage_logs:/var/www/html/storage/logs
|
- ./docker/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
|
||||||
- storage_cache:/var/www/html/storage/framework
|
- storage_logs:/var/www/html/storage/logs
|
||||||
ports:
|
- storage_cache:/var/www/html/storage/framework
|
||||||
- "8000:80"
|
ports:
|
||||||
- "3000:3000"
|
- "8000:80"
|
||||||
environment:
|
- "3000:3000"
|
||||||
- APP_ENV=local
|
environment:
|
||||||
- APP_DEBUG=true
|
- APP_ENV=local
|
||||||
depends_on:
|
- APP_DEBUG=true
|
||||||
- db
|
depends_on:
|
||||||
- redis
|
- db
|
||||||
networks:
|
- redis
|
||||||
- ckb-network
|
networks:
|
||||||
|
- ckb-network
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mariadb:10.6
|
||||||
container_name: ckb-mysql
|
platform: linux/amd64
|
||||||
restart: unless-stopped
|
container_name: ckb-mysql-dev
|
||||||
environment:
|
restart: unless-stopped
|
||||||
MYSQL_DATABASE: ckb_db
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: root
|
MYSQL_DATABASE: ckb_db
|
||||||
MYSQL_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: root
|
||||||
MYSQL_USER: laravel
|
MYSQL_PASSWORD: password
|
||||||
volumes:
|
MYSQL_USER: laravel
|
||||||
- mysql_data:/var/lib/mysql
|
volumes:
|
||||||
- ./ckb.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
- mysql_data:/var/lib/mysql
|
||||||
ports:
|
- ./ckb.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
||||||
- "3306:3306"
|
- ./docker/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
|
||||||
networks:
|
ports:
|
||||||
- ckb-network
|
- "3306:3306"
|
||||||
|
networks:
|
||||||
|
- ckb-network
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
container_name: ckb-redis
|
container_name: ckb-redis-dev
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "6379:6379"
|
||||||
networks:
|
volumes:
|
||||||
- ckb-network
|
- redis_data:/data
|
||||||
|
networks:
|
||||||
|
- ckb-network
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
image: phpmyadmin/phpmyadmin
|
image: phpmyadmin/phpmyadmin
|
||||||
container_name: ckb-phpmyadmin
|
container_name: ckb-phpmyadmin
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
PMA_HOST: db
|
PMA_HOST: db
|
||||||
PMA_PORT: 3306
|
PMA_PORT: 3306
|
||||||
MYSQL_ROOT_PASSWORD: root
|
MYSQL_ROOT_PASSWORD: root
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
- ckb-network
|
- ckb-network
|
||||||
|
|
||||||
mailhog:
|
mailhog:
|
||||||
image: mailhog/mailhog
|
image: mailhog/mailhog
|
||||||
container_name: ckb-mailhog
|
container_name: ckb-mailhog
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "1025:1025"
|
- "1025:1025"
|
||||||
- "8025:8025"
|
- "8025:8025"
|
||||||
networks:
|
networks:
|
||||||
- ckb-network
|
- ckb-network
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mysql_data:
|
mysql_data:
|
||||||
driver: local
|
driver: local
|
||||||
storage_logs:
|
redis_data:
|
||||||
driver: local
|
driver: local
|
||||||
storage_cache:
|
storage_logs:
|
||||||
driver: local
|
driver: local
|
||||||
|
storage_cache:
|
||||||
|
driver: local
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
ckb-network:
|
ckb-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -107,6 +107,9 @@ start_containers() {
|
|||||||
print_status "Waiting for MySQL to be ready..."
|
print_status "Waiting for MySQL to be ready..."
|
||||||
sleep 20
|
sleep 20
|
||||||
|
|
||||||
|
# Wait a bit more for MySQL to be fully ready
|
||||||
|
sleep 10
|
||||||
|
|
||||||
# Check if database was imported automatically
|
# Check if database was imported automatically
|
||||||
if docker-compose exec -T db mysql -u root -proot -e "USE ckb_db; SHOW TABLES;" > /dev/null 2>&1; then
|
if docker-compose exec -T db mysql -u root -proot -e "USE ckb_db; SHOW TABLES;" > /dev/null 2>&1; then
|
||||||
table_count=$(docker-compose exec -T db mysql -u root -proot -e "USE ckb_db; SHOW TABLES;" 2>/dev/null | wc -l)
|
table_count=$(docker-compose exec -T db mysql -u root -proot -e "USE ckb_db; SHOW TABLES;" 2>/dev/null | wc -l)
|
||||||
@@ -118,7 +121,7 @@ start_containers() {
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
print_warning "Database not accessible. Running manual import..."
|
print_warning "Database not accessible. Running manual import..."
|
||||||
sleep 10
|
sleep 15
|
||||||
./docker-import-db.sh dev
|
./docker-import-db.sh dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -12,34 +12,32 @@ DB_CONNECTION=mysql
|
|||||||
DB_HOST=db
|
DB_HOST=db
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=ckb_db
|
DB_DATABASE=ckb_db
|
||||||
DB_USERNAME=laravel
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=password
|
DB_PASSWORD=root
|
||||||
DB_ROOT_PASSWORD=root
|
|
||||||
|
|
||||||
# Redis Configuration for Docker
|
# Redis Configuration for Docker
|
||||||
REDIS_HOST=redis
|
REDIS_HOST=redis
|
||||||
REDIS_PASSWORD=null
|
REDIS_PASSWORD=null
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
|
|
||||||
# Cache Configuration
|
BROADCAST_DRIVER=log
|
||||||
CACHE_DRIVER=redis
|
CACHE_DRIVER=redis
|
||||||
QUEUE_CONNECTION=redis
|
FILESYSTEM_DRIVER=local
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
SESSION_DRIVER=redis
|
SESSION_DRIVER=redis
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
# Mail Configuration (using MailHog for development)
|
# Mail Configuration for Docker (MailHog)
|
||||||
MAIL_MAILER=smtp
|
MAIL_MAILER=smtp
|
||||||
MAIL_HOST=mailhog
|
MAIL_HOST=mailhog
|
||||||
MAIL_PORT=1025
|
MAIL_PORT=1025
|
||||||
MAIL_USERNAME=null
|
MAIL_USERNAME=null
|
||||||
MAIL_PASSWORD=null
|
MAIL_PASSWORD=null
|
||||||
MAIL_ENCRYPTION=null
|
MAIL_ENCRYPTION=null
|
||||||
MAIL_FROM_ADDRESS=noreply@ckb.local
|
MAIL_FROM_ADDRESS=test@ckb.local
|
||||||
MAIL_FROM_NAME="${APP_NAME}"
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
# Broadcasting
|
# AWS (if needed for production)
|
||||||
BROADCAST_DRIVER=log
|
|
||||||
|
|
||||||
# AWS (if needed)
|
|
||||||
AWS_ACCESS_KEY_ID=
|
AWS_ACCESS_KEY_ID=
|
||||||
AWS_SECRET_ACCESS_KEY=
|
AWS_SECRET_ACCESS_KEY=
|
||||||
AWS_DEFAULT_REGION=us-east-1
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
@@ -50,7 +48,13 @@ AWS_USE_PATH_STYLE_ENDPOINT=false
|
|||||||
PUSHER_APP_ID=
|
PUSHER_APP_ID=
|
||||||
PUSHER_APP_KEY=
|
PUSHER_APP_KEY=
|
||||||
PUSHER_APP_SECRET=
|
PUSHER_APP_SECRET=
|
||||||
|
PUSHER_HOST=
|
||||||
|
PUSHER_PORT=443
|
||||||
|
PUSHER_SCHEME=https
|
||||||
PUSHER_APP_CLUSTER=mt1
|
PUSHER_APP_CLUSTER=mt1
|
||||||
|
|
||||||
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
VITE_PUSHER_HOST="${PUSHER_HOST}"
|
||||||
|
VITE_PUSHER_PORT="${PUSHER_PORT}"
|
||||||
|
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
|
||||||
|
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
@@ -4,27 +4,27 @@ default-authentication-plugin = mysql_native_password
|
|||||||
character-set-server = utf8mb4
|
character-set-server = utf8mb4
|
||||||
collation-server = utf8mb4_unicode_ci
|
collation-server = utf8mb4_unicode_ci
|
||||||
|
|
||||||
# Connection settings
|
# Performance settings
|
||||||
max_connections = 200
|
|
||||||
connect_timeout = 60
|
|
||||||
wait_timeout = 600
|
|
||||||
interactive_timeout = 600
|
|
||||||
|
|
||||||
# Buffer settings
|
|
||||||
innodb_buffer_pool_size = 256M
|
innodb_buffer_pool_size = 256M
|
||||||
innodb_log_file_size = 64M
|
innodb_log_file_size = 64M
|
||||||
innodb_log_buffer_size = 16M
|
|
||||||
innodb_flush_log_at_trx_commit = 1
|
innodb_flush_log_at_trx_commit = 1
|
||||||
|
innodb_flush_method = O_DIRECT
|
||||||
|
|
||||||
# Query cache
|
# Connection settings
|
||||||
query_cache_type = 1
|
max_connections = 200
|
||||||
query_cache_size = 32M
|
max_allowed_packet = 16M
|
||||||
query_cache_limit = 2M
|
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
|
general_log = 0
|
||||||
slow_query_log = 1
|
slow_query_log = 1
|
||||||
slow_query_log_file = /var/log/mysql/slow.log
|
slow_query_log_file = /var/log/mysql/slow.log
|
||||||
long_query_time = 2
|
long_query_time = 2
|
||||||
|
|
||||||
# Security
|
# Security
|
||||||
local_infile = 0
|
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
|
||||||
|
|
||||||
|
[mysql]
|
||||||
|
default-character-set = utf8mb4
|
||||||
|
|
||||||
|
[client]
|
||||||
|
default-character-set = utf8mb4
|
||||||
@@ -1,21 +1,16 @@
|
|||||||
; PHP Configuration for CKB Laravel App
|
; PHP Configuration for Laravel
|
||||||
|
|
||||||
; Maximum execution time
|
; General settings
|
||||||
max_execution_time = 300
|
|
||||||
|
|
||||||
; Maximum input time
|
|
||||||
max_input_time = 300
|
|
||||||
|
|
||||||
; Memory limit
|
|
||||||
memory_limit = 512M
|
memory_limit = 512M
|
||||||
|
max_execution_time = 300
|
||||||
; Upload settings
|
max_input_time = 300
|
||||||
upload_max_filesize = 100M
|
|
||||||
post_max_size = 100M
|
post_max_size = 100M
|
||||||
|
upload_max_filesize = 100M
|
||||||
max_file_uploads = 20
|
max_file_uploads = 20
|
||||||
|
|
||||||
; Error reporting
|
; Error reporting (will be overridden by environment)
|
||||||
display_errors = Off
|
display_errors = Off
|
||||||
|
display_startup_errors = Off
|
||||||
log_errors = On
|
log_errors = On
|
||||||
error_log = /var/log/php_errors.log
|
error_log = /var/log/php_errors.log
|
||||||
|
|
||||||
@@ -23,14 +18,37 @@ error_log = /var/log/php_errors.log
|
|||||||
date.timezone = Asia/Jakarta
|
date.timezone = Asia/Jakarta
|
||||||
|
|
||||||
; Session settings
|
; Session settings
|
||||||
|
session.save_handler = files
|
||||||
|
session.save_path = /var/www/html/storage/framework/sessions
|
||||||
session.gc_maxlifetime = 1440
|
session.gc_maxlifetime = 1440
|
||||||
session.cookie_lifetime = 0
|
session.cookie_lifetime = 0
|
||||||
|
session.cookie_secure = Off
|
||||||
|
session.cookie_httponly = On
|
||||||
|
|
||||||
; OPcache settings
|
; OPcache settings (for production performance)
|
||||||
opcache.enable = 1
|
opcache.enable = 1
|
||||||
|
opcache.enable_cli = 0
|
||||||
opcache.memory_consumption = 128
|
opcache.memory_consumption = 128
|
||||||
opcache.interned_strings_buffer = 8
|
opcache.interned_strings_buffer = 8
|
||||||
opcache.max_accelerated_files = 4000
|
opcache.max_accelerated_files = 4000
|
||||||
opcache.revalidate_freq = 2
|
opcache.revalidate_freq = 2
|
||||||
opcache.fast_shutdown = 1
|
opcache.fast_shutdown = 1
|
||||||
opcache.enable_cli = 1
|
|
||||||
|
; Security settings
|
||||||
|
expose_php = Off
|
||||||
|
allow_url_fopen = On
|
||||||
|
allow_url_include = Off
|
||||||
|
|
||||||
|
; File uploads
|
||||||
|
file_uploads = On
|
||||||
|
upload_tmp_dir = /tmp
|
||||||
|
|
||||||
|
; MySQL settings
|
||||||
|
mysqli.default_port = 3306
|
||||||
|
mysqli.default_socket =
|
||||||
|
mysqli.default_host =
|
||||||
|
mysqli.default_user =
|
||||||
|
mysqli.default_pw =
|
||||||
|
|
||||||
|
; Redis extension
|
||||||
|
extension = redis.so
|
||||||
Reference in New Issue
Block a user