diff --git a/.github/workflows/laravel-create-project.yaml b/.github/workflows/laravel-create-project.yaml index 06cd1504..c6bc9a87 100644 --- a/.github/workflows/laravel-create-project.yaml +++ b/.github/workflows/laravel-create-project.yaml @@ -11,7 +11,10 @@ jobs: - name: Docker Version run: docker version - name: Docker Compose Settings - run: echo APP_BUILD_TARGET=development-xdebug > .env + run: | + echo APP_BUILD_TARGET=development-xdebug > .env + echo "UID=$(id -u)" >> .env + echo "GID=$(id -g)" >> .env - name: Build Docker Images run: docker compose build - name: Create & Start Docker Containers diff --git a/.github/workflows/laravel-git-clone.yaml b/.github/workflows/laravel-git-clone.yaml index af8cfb40..7621978d 100644 --- a/.github/workflows/laravel-git-clone.yaml +++ b/.github/workflows/laravel-git-clone.yaml @@ -13,7 +13,10 @@ jobs: - name: Docker Version run: docker version - name: Docker Compose Settings - run: echo APP_BUILD_TARGET=development-xdebug > .env + run: | + echo APP_BUILD_TARGET=development-xdebug > .env + echo "UID=$(id -u)" >> .env + echo "GID=$(id -g)" >> .env - name: Build Docker Images run: docker compose build - name: Create & Start Docker Containers diff --git a/Makefile b/Makefile index c1e19fc5..caed86df 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +for-linux-env: + echo "UID=$$(id -u)" >> .env + echo "GID=$$(id -g)" >> .env install: @make build @make up diff --git a/README.md b/README.md index bafc12cf..0418f64f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## Introduction -Build a simple laravel development environment with docker-compose. Compatible with Windows(WSL2), macOS(M1) and Linux. +Build a simple laravel development environment with Docker Compose. Support with Windows(WSL2), macOS(Intel and Apple Silicon) and Linux. ## Usage @@ -22,14 +22,19 @@ Build a simple laravel development environment with docker-compose. Compatible w 3. Execute the following command ```bash +$ task for-linux-env # Linux environment only $ task create-project # or... +$ make for-linux-env # Linux environment only $ make create-project # or... +$ echo "UID=$(id -u)" >> .env # Linux environment only +$ echo "GID=$(id -g)" >> .env # Linux environment only + $ mkdir -p src $ docker compose build $ docker compose up -d @@ -48,14 +53,19 @@ http://localhost 2. Execute the following command ```bash +$ task for-linux-env # Linux environment only $ task install # or... +$ make for-linux-env # Linux environment only $ make install # or... +$ echo "UID=$(id -u)" >> .env # Linux environment only +$ echo "GID=$(id -g)" >> .env # Linux environment only + $ docker compose build $ docker compose up -d $ docker compose exec app composer install diff --git a/Taskfile.yml b/Taskfile.yml index e280e388..09477dbe 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -1,6 +1,11 @@ version: '3' tasks: + for-linux-env: + cmds: + - echo "UID=$(id -u)" >> .env + - echo "GID=$(id -g)" >> .env + install: cmds: - docker compose build diff --git a/compose.yaml b/compose.yaml index 11612928..2601bf00 100644 --- a/compose.yaml +++ b/compose.yaml @@ -11,6 +11,9 @@ services: build: context: . dockerfile: ./infra/docker/php/Dockerfile + args: + UID: ${UID:-65534} + GID: ${GID:-65534} target: ${APP_BUILD_TARGET:-development} volumes: - type: bind @@ -18,7 +21,7 @@ services: target: /workspace - type: volume source: psysh-store - target: /root/.config/psysh + target: /nonexistent/.config/psysh volume: nocopy: true environment: diff --git a/infra/docker/php/Dockerfile b/infra/docker/php/Dockerfile index 8a903047..315fb87b 100644 --- a/infra/docker/php/Dockerfile +++ b/infra/docker/php/Dockerfile @@ -9,9 +9,11 @@ ENV TZ=UTC \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ # composer environment - COMPOSER_ALLOW_SUPERUSER=1 \ COMPOSER_HOME=/composer +ARG UID=65534 +ARG GID=65534 + COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer RUN <