PHP-fpm (8.3), nginx и PostgreSQL: Обзор Dockerfile docker-compose.yml и Makefile Как с этим работать
Primary tabs
docker-compose.yml:
version: '3.9' services: # Nginx service nginx: image: nginx:alpine container_name: ktu-articles_nginx ports: - 19741:80 expose: - "80" environment: - VIRTUAL_HOST=auth.ktu10.loc - VIRTUAL_PORT=80 volumes: - './config/nginx/:/etc/nginx/conf.d/' - '..:/var/www' depends_on: - app networks: - proxy_network - auth_network app: build: context: . dockerfile: Dockerfile container_name: ktu-articles_php working_dir: /var/www/ volumes: - '../:/var/www' - ./config/php-fpm/docker-php-ext-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini extra_hosts: - "host.docker.internal:host-gateway" depends_on: - db networks: - auth_network db: image: postgres:14.2 container_name: ktu-articles_db volumes: - './config/postgresql:/docker-entrypoint-initdb.d' environment: POSTGRES_USER: ktu-articles_user POSTGRES_PASSWORD: ktu-articles_password POSTGRES_MULTIPLE_DATABASES: ktu-articles_db,ktu-articles_db_test ports: - 19745:5432 networks: - auth_network networks: proxy_network: name: nginx_dev_local_network external: true auth_network: name: auth_network
nginx_dev_local_network -- тут не нужна, ее можно удалить
Dockerfile:
FROM php:8.3.0-fpm-alpine3.19 RUN apk --no-cache update \ && apk add --no-cache autoconf g++ make \ postgresql-dev linux-headers RUN pecl install xdebug-3.3.0 \ && rm -rf /tmp/pear RUN docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ \ && docker-php-ext-install pdo_pgsql #composer ENV COMPOSER_ALLOW_SUPERUSER 1 COPY --from=composer:latest /usr/bin/composer /usr/bin/composer #codeception alias RUN echo 'alias cept="./vendor/bin/codecept"' >> ~/.profile WORKDIR /var/www
Упоминаемый в docker-compose.yml файл ./config/php-fpm/docker-php-ext-xdebug.ini может иметь такое содержимое:
zend_extension=xdebug xdebug.mode=debug xdebug.client_host=host.docker.internal xdebug.client_port=9004 ;xdebug.start_with_request=yes xdebug.idekey="netbeans-xdebug"
Makefile:
#Задаем подкоманды для изменения цвета export red=`tput setaf 1` export green=`tput setaf 2` export yellow=`tput setaf 3` export blue=`tput setaf 4` export magenta=`tput setaf 5` export cyan=`tput setaf 6` export white=`tput setaf 7` export reset=`tput sgr0` PROJECT_NAME = ktu-articles APP_CONTANER_COMMAND_PREF_PHP = @docker exec -it $(PROJECT_NAME)_php APP_CONTANER_COMMAND_PREF_NGINX = @docker exec -it $(PROJECT_NAME)_nginx APP_CONTANER_COMMAND_PREF_DB = @docker exec -it $(PROJECT_NAME)_db APP_CONTANER_COMMAND_PROD_PREF = @docker exec -it $(PROJECT_NAME)_web_prod LOCAL_APP_URL_MESSAGE = @echo "Локальное приложение ${cyan}ktu-articles${reset}: http://localhost:19741" COMPOSE_DEV = docker compose -f ./docker/docker-compose.yml --project-name $(PROJECT_NAME) about: @echo "${cyan}Привет!)${reset} Это мэйкфайл для удобной работы с командами ${cyan};)${reset} \ \n Выполняйте нужные действия с помощью ${yellow}make имякоманды${reset}, доступные команды: \ \n ${green}migrate${reset} - применит миграции \ \n ${green}docker.start.all${reset} - Запустит все контейнеры приложения (соберет образы, если их нет) \ \n ${green}docker.stop.all${reset} - Остановит все контейнеры приложения \ \n ${green}docker.restart.all${reset} - Остановит все контейнеры приложения и запустит их заново \ \n ${green}docker.rebuild.all${reset} - Остановит все контейнеры приложения, пересоберет их запустит их заново \ " # DOCKER--------------------------------------- sh.php: $(APP_CONTANER_COMMAND_PREF_PHP) sh -l sh.nginx: $(APP_CONTANER_COMMAND_PREF_NGINX) sh sh.db: $(APP_CONTANER_COMMAND_PREF_DB) sh docker.start.all: $(COMPOSE_DEV) up -d $(LOCAL_APP_URL_MESSAGE) docker.stop.all: $(COMPOSE_DEV) stop docker.rebuild.all: docker.stop.all $(COMPOSE_DEV) up -d --build $(LOCAL_APP_URL_MESSAGE) docker.restart.all: docker.stop.all docker.start.all docker.remove.db: docker rm $(PROJECT_NAME)_db docker.reset.all: docker.stop.all docker.remove.db docker.rebuild.all docker.php.sh: $(APP_CONTANER_COMMAND_PREF_PHP) sh #APPLICATION-------------------------------------- composer.install: @echo "Устанавливаем ${yellow}зависимости${reset}..." $(APP_CONTANER_COMMAND_PREF_PHP) composer install migrate: @echo "Выполняем ${yellow}миграции${reset}..." $(APP_CONTANER_COMMAND_PREF_PHP) php bin/console doctrine:migrations:migrate -n # TMP-------------------------------------------- sh.db.test: $(APP_CONTANER_COMMAND_PREF_DB) psql -U ktu-articles_user ktu-articles_db docker.test.proxy: curl -H "Host: auth.ktu10.loc" localhost:8888
- Log in to post comments
- 318 reads