Skip to content

Commit 1bb6d78

Browse files
committed
refactor: Update environment configuration and initialization script for improved user/group handling and permissions setup.
1 parent 735a7a4 commit 1bb6d78

File tree

4 files changed

+37
-23
lines changed

4 files changed

+37
-23
lines changed

.env

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# User and Group settings
2-
GROUP_ID=1000
3-
GROUP_NAME=www-data
2+
# For automatic host user detection, run before docker-compose:
3+
# export USER_ID=$(id -u) && export GROUP_ID=$(id -g)
4+
# Otherwise, these defaults will be used:
45
USER_ID=1000
6+
GROUP_ID=1000
57
USER_NAME=www-data
8+
GROUP_NAME=www-data
69

710
# Yii2 environment settings
811
YII_DEBUG=true

docker-compose.frankenphp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ services:
1616
working_dir: /app
1717
volumes:
1818
- ./:/app
19-
- ~/.composer-docker/cache:/root/.composer/cache:delegated
19+
- ~/.composer-docker/cache:/var/www/.composer/cache:delegated
2020
- caddy_data:/data
2121
- caddy_config:/config
2222
ports:

docker/frankenphp/Dockerfile

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,23 @@ ENV COMPOSER_ALLOW_SUPERUSER=1
3434
# Change PHP config
3535
COPY docker/php/php.ini /usr/local/etc/php/conf.d/base.ini
3636

37-
# Install supervisord and Node.js (includes npm)
38-
RUN apt-get update && apt-get install -y \
37+
# Install supervisord, Node.js, and gosu
38+
RUN apt-get update && apt-get install -y --no-install-recommends \
3939
supervisor \
4040
curl \
41-
--no-install-recommends \
41+
gosu \
4242
&& curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
4343
&& apt-get install -y nodejs \
4444
&& apt-get clean \
4545
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
4646

47+
# Apply the user/group IDs to www-data
48+
RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data
49+
50+
# Create composer cache directory with proper ownership
51+
RUN mkdir -p /var/www/.composer/cache && \
52+
chown -R www-data:www-data /var/www/.composer
53+
4754
# Copy supervisord config
4855
COPY docker/frankenphp/supervisord/supervisord.conf /etc/supervisor/supervisord.conf
4956

docker/init.sh

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ NC='\033[0m'
88

99
echo -e "${GREEN}Starting container setup...${NC}"
1010

11+
# Create necessary Caddy directories with proper permissions
12+
echo -e "${YELLOW}Creating Caddy directories...${NC}"
13+
mkdir -p /data/caddy/locks /config/caddy
14+
chown -R www-data:www-data /data /config
15+
chmod -R 755 /data /config
16+
1117
# Create necessary Yii2 directories if they don't exist
1218
echo -e "${YELLOW}Creating Yii2 directories...${NC}"
1319
mkdir -p /app/runtime/cache
@@ -48,29 +54,27 @@ echo -e "${GREEN}Setup completed.${NC}"
4854
if [ -f "/app/composer.json" ] && [ ! -d "/app/vendor" ]; then
4955
echo -e "${YELLOW}Installing Composer dependencies...${NC}"
5056

51-
# Install dependencies based on environment
57+
# Make /app writable by www-data for mounted volumes
58+
chmod 777 /app
59+
60+
# Install dependencies with proper environment variables
5261
if [ "$YII_ENV" = "prod" ]; then
5362
# Production: exclude dev dependencies and optimize autoloader
54-
composer install --no-dev --optimize-autoloader --no-interaction
63+
gosu www-data env \
64+
HOME=/var/www \
65+
COMPOSER_HOME=/var/www/.composer \
66+
COMPOSER_CACHE_DIR=/var/www/.composer/cache \
67+
composer install --no-dev --optimize-autoloader --no-interaction
5568
else
5669
# Development: include dev dependencies
57-
composer install --optimize-autoloader --no-interaction
58-
fi
59-
60-
# Set proper ownership for vendor directory if possible
61-
if chown -R www-data:www-data /app/vendor 2>/dev/null; then
62-
echo -e "${GREEN}✓ Vendor directory ownership set${NC}"
70+
gosu www-data env \
71+
HOME=/var/www \
72+
COMPOSER_HOME=/var/www/.composer \
73+
COMPOSER_CACHE_DIR=/var/www/.composer/cache \
74+
composer install --optimize-autoloader --no-interaction
6375
fi
6476

65-
echo -e "${GREEN}✓ Composer dependencies installed successfully.${NC}"
66-
fi
67-
68-
# Set permissions for node_modules directory if it exists
69-
if chown -R www-data:www-data /app/node_modules 2>/dev/null; then
70-
chmod -R 775 /app/node_modules
71-
echo -e "${GREEN}✓ Node modules directory ownership set${NC}"
72-
else
73-
echo -e "${YELLOW}⚠ Node modules directory ownership could not be set (mounted volume?)${NC}"
77+
echo -e "${GREEN}✓ Composer dependencies installed successfully${NC}"
7478
fi
7579

7680
echo -e "${GREEN}Starting supervisord...${NC}"

0 commit comments

Comments
 (0)