[ChAoZ]
Rear Admiral
- Registriert
- Jan. 2010
- Beiträge
- 5.288
Hallo Leute,
ganz einfach, ich habe ein leeres CakePHP Projekt und möchte es über Docker betreiben.
Dazu baue ich das Image mit
Während des Builds wird auch Composer runtergeladen und installiert (Dev-Image).
Nun würde ich gerne auch
Soweit kein Problem, nur landet Vendor eben nicht in meinem Localhost sondern im Image.
Für Prod-Image ist das korrekt, für Dev-Image nicht.
Wie kriege ich es also hin dass beim Build die Abhängigkeiten (Vendor) im Localhost landen und nicht im Image?
Dockerfile
docker-compose.yml
ganz einfach, ich habe ein leeres CakePHP Projekt und möchte es über Docker betreiben.
Dazu baue ich das Image mit
docker-compose build
Während des Builds wird auch Composer runtergeladen und installiert (Dev-Image).
Nun würde ich gerne auch
composer install
durchführen, also beim Build-Prozess.Soweit kein Problem, nur landet Vendor eben nicht in meinem Localhost sondern im Image.
Für Prod-Image ist das korrekt, für Dev-Image nicht.
Wie kriege ich es also hin dass beim Build die Abhängigkeiten (Vendor) im Localhost landen und nicht im Image?
Dockerfile
Code:
FROM bitnami/php-fpm:8.1.6-debian-10-r14 as base-image
LABEL version="0.1" \
maintainer="FooBar"
# system update
RUN apt-get update && apt-get upgrade -y && \
rm -r /var/lib/apt/lists /var/cache/apt/archives
# set right timezone and locale
RUN echo Europe/Berlin > /etc/timezone
ENV TZ Europe/Berlin
ENV LANG de_DE.UTF-8
WORKDIR /app
#### DEV IMAGE ####
FROM base-image as dev-image
ENV APP_ENV dev
# install required system packages and dependencies
RUN install_packages \
build-essential \
autoconf
RUN pecl install \
xdebug-3.1.4
# copy docker-php scripts because bitnami images doesn't know them
# https://github.com/docker-library/php/tree/master/8.1/buster/fpm
COPY config/docker/docker-php-* /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-php-*
RUN docker-php-ext-enable \
xdebug
# install composer
RUN wget -O composer https://getcomposer.org/download/latest-stable/composer.phar \
&& chmod a+x composer \
&& mv composer /usr/local/bin/composer
# inject config file
COPY config/php/$APP_ENV/xdebug.ini /opt/bitnami/php/etc/conf.d/xdebug.ini
COPY config/php/$APP_ENV/php.ini /opt/bitnami/php/lib/php.ini
docker-compose.yml
Code:
version: "3.8"
services:
php:
image: app-api:dev
build:
context: .
dockerfile: Dockerfile
ports:
- "9000:9000"
environment:
CAKE_ENV: dev
links:
- mariadb
restart: unless-stopped
apache:
image: bitnami/apache:2.4.53-debian-10-r71
ports:
- "8080:8080"
volumes:
- ./config/apache/dev/vhost.conf:/vhosts/app-api.conf:ro
depends_on:
- php
restart: unless-stopped
mariadb:
image: bitnami/mariadb:10.7.4-debian-10-r5
ports:
- "3306:3306"
volumes:
- ./tmp/mariadb:/bitnami/mariadb
- ./config/mariadb/schema:/docker-entrypoint-initdb.d/
environment:
MARIADB_ROOT_PASSWORD: root
restart: unless-stopped