Вот что я использую:docker-compose.yml:
Код: Выделить всё
yaml
Copy code
version: '3.8'
services:
# Web service (PHP & Apache)
web:
build:
context: ../
dockerfile: docker/dockerfile
ports:
- "8080:80"
volumes:
- ../:/var/www/html
- ./apache-custom.conf:/etc/apache2/sites-available/000-default.conf
depends_on:
- db
restart: always
networks:
- cake-sale-network
# Database service (MySQL)
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: banhang_php
MYSQL_USER: user
MYSQL_PASSWORD: 1
volumes:
- banhang_php:/var/lib/mysql
- ./database/banhang_php.sql:/docker-entrypoint-initdb.d/banhang_php.sql
ports:
- "3306:3306"
restart: always
networks:
- cake-sale-network
# phpMyAdmin service for database management
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- "8081:80"
depends_on:
- db
restart: always
networks:
- cake-sale-network
# Test service for PHPUnit
test:
build:
context: ../
dockerfile: docker/dockerfile
command: bash -c "composer install && ./vendor/bin/phpunit --configuration phpunit.xml --coverage-text"
volumes:
- ../:/var/www
depends_on:
- db
networks:
- cake-sale-network
restart: "no"
environment:
- XDEBUG_MODE=coverage
- MYSQL_HOST=db
- MYSQL_USER=user
- MYSQL_PASSWORD=1
- MYSQL_DB=banhang_php
volumes:
banhang_php:
networks:
cake-sale-network:
driver: bridge
Код: Выделить всё
FROM php:8.2.4-apache
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
build-essential \
libtool
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd mysqli pdo pdo_mysql
RUN rm -rf /var/lib/apt/lists/*
ENV APACHE_DOCUMENT_ROOT /var/www/cake-main
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
WORKDIR /var/www/cake-main
COPY . /var/www
RUN composer require --dev phpunit/phpunit
RUN composer install
RUN pecl install xdebug && docker-php-ext-enable xdebug
ENV XDEBUG_MODE=coverage
RUN echo 'ServerName localhost' >> /etc/apache2/apache2.conf && \
echo '' >> /etc/apache2/apache2.conf && \
echo ' AllowOverride All' >> /etc/apache2/apache2.conf && \
echo ' Require all granted' >> /etc/apache2/apache2.conf && \
echo '' >> /etc/apache2/apache2.conf
RUN a2enmod rewrite
RUN chmod -R 755 /var/www/html && chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/cake-main && chown -R www-data:www-data /var/www/cake-main
CMD ["apache2-foreground", "-e", "info"]
EXPOSE 80
Когда я запускаю docker-compose up и посещаю localhost:8080 в своем браузере, веб-сайт загружается, но он всегда отображается на английском языке. , независимо от ожидаемых конфигураций (например, настройки локализации должны быть на вьетнамском языке). Я подтвердил, что настройки локализации приложения в apache-custom.conf и в коде PHP верны, но, похоже, они не вступили в силу.
Я также пробовал перезапустить контейнеры несколько раз и проверил журналы веб-служб и служб БД, но никаких конкретных ошибок, указывающих на то, почему не применяются языковые настройки, не обнаружено.
Что я пробовал
Проверка наличия Файл apache-custom.conf применяется правильно, проверяя файл /etc/apache2/sites-available/000-default.conf контейнера.
Убедившись, что настройки локализации внутри PHP-приложения верны.
Перезапуск контейнеры несколько раз.
Проверка языковых предпочтений вручную в настройках приложения.
Ожидаемый результат:
Я ожидаю, что приложение загрузится на вьетнамском языке в соответствии с настройки в моих файлах конфигурации.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ide-docker
Мобильная версия