私は、Mac OSシエラ、すなわちweb
、mysql
とmongo
上で実行されている3個のドッカーコンテナを持っている、とApacheで、基本的にUbuntuのXenailベースでweb
に両方mongo
とmysql
を、リンクされていますPHPが追加されました。symfonyはMySQLのドッカーコンテナに接続することはできません
私は現在web
容器の中に私の地元のsymfonyプロジェクトを取り付けていて、それが正常に動作しているようだが、私はどのような方法でDBと対話しようとすると、私が手に:例外が発生した
ドライバーで:SQLSTATE [HY000] [2002]接続 が
を拒否した私は、パラメータ値のほぼすべての組み合わせを試してみましたが、同じ結果を得続けるました。
私はコンテナをリンクする方法と関係があると思われますか?
私はDockerを学んでいるので、私の限られた知識を許してください。
ありがとうございます!
ウェブdockerfile:
FROM ubuntu:xenial
MAINTAINER Some Guy <[email protected]>
RUN apt-get update && apt-get install -y \
apache2 \
vim \
php \
php-common \
php-cli \
php-curl \
php-mysql \
php-mongodb \
libapache2-mod-php \
php-gd
RUN mkdir -p /var/www/symfony.local/public_html
RUN chown -R $USER:$USER /var/www/symfony.local/public_html
RUN chmod -R 755 /var/www
COPY config/php/php.ini /usr/local/etc/php/
COPY config/apache/sites-available/*.conf /etc/apache2/sites-available/
RUN a2enmod rewrite
RUN a2dissite 000-default.conf
RUN a2ensite symfony.local.conf
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
MySQLのdockerfile:
FROM mysql:5.7
MAINTAINER Some Guy <[email protected]>
# Set the root users password
ENV MYSQL_ROOT_PASSWORD password
# Copy over the DB dump to be run upon creation
COPY sql/ /docker-entrypoint-initdb.d
# Copy over the custom mysql config file
COPY config/ /etc/mysql/conf.d
EXPOSE 3306
実行コマンド:
docker run --name mongo -d mongo #Im making use of the official Mongo image
docker run --name mysql -v /usr/local/var/mysql:/var/lib/mysql -d someguy/local:mysql
docker run --name web -d -p 80:80 --link mysql:mysql --link mongo:mongo -v ~/Sites/symfony.local/:/var/www/symfony.local/public_html/ someguy/local:web
のSymfony parameters.ymlファイル:
parameters:
database_host: mysql
database_port: 3306
database_name: gorilla
database_user: root
database_password: password
UPDATE:
だから私はdocker-compose
を使用して上に移動しましたが、まだ同じエラーが発生します。
ドッキングウィンドウ-compose.ymlファイル
version: "2"
services:
web:
build: ./web
ports:
- "80:80"
volumes:
- ~/Sites/symfony.local/:/var/www/symfony.local/public_html/
depends_on:
- db
- mongo
mongo:
image: mongo:latest
mysql:
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
これはDocker自体とはほとんど関係がありません。 MySQLでリモートアクセスをどのように設定しましたか? – mustaccio
私が行ったことはわかりませんが、私は公式のmysqlイメージを拡張し、 'sql_mode'を設定しました。イメージがWebコンテナに直接リンクされている場合でもリモートアクセスを設定する必要はありますか? – Odyss3us
このDockerの「リンク」と混同しないでください。各コンテナは、Dockerネットワーク上のホストとして認識されます。 Dockerのネットワーキング(およびMySQLリモートアクセスの設定)を読むことができます。 – mustaccio