在我的公司,我有一个旧的 Symfony 应用程序在 Docker 容器中运行。该应用程序连接到一个 SQL 数据库,该数据库也在 Docker 容器内运行。
该图像是使用 php:7.2-apache-stretch 构建的,但该版本已不再可用。 Symfony 版本为 3.2
我试图更新图像,但现在应用程序无法再连接到数据库。
当我尝试获取存储库时,出现错误:An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
已存档/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php
这是旧 Dockerfile 的一部分:
FROM php:7.2-apache-stretch
.
.
RUN chown -R www-data:www-data /srv/test\
&& apt-get update \
&& apt-get -y install libpng-dev libjpeg-dev unzip\
&& docker-php-ext-install -j$(nproc) mbstring mysqli pdo pdo_mysql shmop zip gd \
&& a2enmod rewrite ssl socache_shmcb \
&& service apache2 restart \
&& composer install \
&& chown -R www-data:www-data /srv/test\
&& useradd -rm -d /home/test-s /bin/bash -g root -G sudo -u 503 test\
这是我的新 Dockerfile:
FROM composer:latest AS composer
FROM php:7.4.20-apache
COPY --chown=33:33 . /srv/test
COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf
COPY .docker/php.ini /usr/local/lib/
COPY .docker/php.ini /usr/local/lib/php
COPY .docker/php.ini /usr/local/etc/php
WORKDIR /srv/test
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN chown -R www-data:www-data /srv/test
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libzip-dev \
zip \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-source delete \
&& useradd -rm -d /home/test-s /bin/bash -g root -G sudo -u 503 test\
&& pecl install xdebug \
&& apt install nano \
&& docker-php-ext-enable xdebug
RUN a2enmod rewrite
RUN service apache2 restart
RUN composer install
我的 docker-compose.yml
version: '3.8'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: test-docker
ports:
- 8080:80
links:
- mysql
volumes:
- .:/srv/test
environment:
PHP_IDE_CONFIG: 'serverName=localhost'
XDEBUG_SESSION: 'PHPSTORM'
XDEBUG_MODE: 'debug'
mysql:
image: mysql:8.0.25
container_name: test_mysql
volumes:
- .docker/mysql/init:/docker-entrypoint-initdb.d
restart: always
ports:
- 13306:3306
environment:
MYSQL_ROOT_PASSWORD: password
作曲家.json
{
"name": "testapp",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ,"lib/googleWallet"]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" }
},
"require": {
"php": ">=7.0.33",
"symfony/symfony": "v3.4.49",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/monolog-bundle": "^3.0",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"jms/serializer-bundle": "^1.1.0",
"lexik/jwt-authentication-bundle": "^1.4",
"knplabs/knp-snappy-bundle": "1.4",
"h4cc/wkhtmltopdf-amd64": "^0.12.3",
"iio/libmergepdf": "~3.0",
"justinrainbow/json-schema": "^5.0",
"symfony/swiftmailer-bundle": "^2.4",
"doctrine/doctrine-fixtures-bundle": "^2.3",
"sensio/generator-bundle": "^3.0",
"phpseclib/phpseclib": "^2.0",
"pkpass/pkpass": "^1.2",
"endroid/qr-code": "^2.5",
"ext-json": "*",
"google/apiclient": "^2.2",
"ext-pdo": "*",
"ext-ctype": "*",
"ext-curl": "*",
"aws/aws-sdk-php": "^3.149",
"symfony/orm-pack": "^2.1"
},
"require-dev": {
"symfony/phpunit-bridge": "^3.0",
"behat/behat": "~3.1@dev",
"behat/mink-extension": "~2.2.0",
"behat/mink-goutte-driver": "~1.2.0",
"behat/mink-selenium2-driver": "~1.3.0",
"phpunit/phpunit": "^7",
"nelmio/alice": "2.*",
"leaphub/phpcs-symfony2-standard": "~2.0.0"
},
"scripts": {
"post-install-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-update-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
]
},
"config": {
"platform": {
"php": "7.4.19"
}
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "3.0-dev"
}
}
}