Set up devcontainer for local dev

Add a complete devcontainer setup to enable one-click development
environment setup in VS Code with all dependencies and services
pre-configured.
This commit is contained in:
Michael Gasparelli 2025-11-30 12:17:51 -05:00
parent 68b4abfac4
commit ec81176515
3 changed files with 76 additions and 0 deletions

49
.devcontainer/Dockerfile Normal file
View File

@ -0,0 +1,49 @@
FROM php:8.2-apache
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
libzip-dev \
libicu-dev \
sqlite3 \
libsqlite3-dev \
unzip \
nodejs \
npm \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) \
gd \
intl \
pdo \
pdo_sqlite \
mbstring \
zip \
fileinfo
# Enable Apache modules
RUN a2enmod rewrite
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Install Yarn
RUN npm install -g yarn
# Set working directory
WORKDIR /workspaces/grocy
# Configure Apache to point to public directory
ENV APACHE_DOCUMENT_ROOT=/workspaces/grocy/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
# Set permissions for data directory
RUN mkdir -p /workspaces/grocy/data && chmod 777 /workspaces/grocy/data

View File

@ -0,0 +1,20 @@
{
"name": "Grocy Development",
"build": {
"dockerfile": "Dockerfile",
"context": "."
},
"forwardPorts": [
80
],
"postCreateCommand": "bash -c 'composer install && yarn install && if [ ! -f data/config.php ]; then cp config-dist.php data/config.php; fi && chmod -R 777 data'",
"postStartCommand": "apache2-foreground &",
"customizations": {
"vscode": {
"settings": {
"php.validate.executablePath": "/usr/local/bin/php"
}
}
},
"remoteUser": "root"
}

7
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"recommendations": [
"bmewburn.vscode-intelephense-client",
"xdebug.php-debug",
"editorconfig.editorconfig"
]
}