Dockerを初めて使用しました。私は私が望んでいたもの(Apache、PHP、MySQL、MailHog、supervisordのCentOS)でイメージを構築することができました。うまく動作します。Docker "ソケット経由でローカルMySQLサーバに接続できません"
さて、私がやろうとしているが、複数の画像/容器の中に私の画像(1コンテナ)を回している:などweb
に1つ、db
のための1つを、私はそれらの異なる画像を構築するために管理
が、 web
とdb
を一緒にdocker-composer.yml
でリンクするのに問題があります。ここで私が持っているものです。
web:
container_name: centosweb
image: fab/centosweb
ports:
- "80:80"
volumes:
# Single files
- ./config/httpd.conf:/etc/httpd/conf/httpd.conf
# Directories
- ./vhosts:/var/www/html
- /Users/fabien/Dropbox/AppData/XAMPP/web/bilingueanglais/public_html:/var/www/html/bilingueanglais
- ./logs/apache:/etc/httpd/logs # This will include access_log(s) and error_log(s), including PHP errors.
links:
- db
db:
container_name: centosdb
image: fab/centosdb
volumes:
# Single files
- ./config/my.cnf:/etc/my.cnf
# Directories
- ./mysqldata:/var/lib/mysql
- ./logs/mysql:/var/log/mysql
docker ps
の出力はこれです:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95048de7a6c4 fab/centosweb "supervisord -n" 14 minutes ago Up 14 minutes 22/tcp, 8025/tcp, 0.0.0.0:80->80/tcp centosweb
eab3047a2dde fab/centosdb "supervisord -n" 14 minutes ago Up 14 minutes 22/tcp, 80/tcp, 8025/tcp centosdb
、私はデータベースのエラーを取得:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
しかし、私は、 centosdbに接続し、MySQLに入り、そこにデータベースがあることを確認することができます(つまり、dbサーバ自体は正常に動作します)。
これまでのところ私の理解はからの接続ではなく、のアプリケーションからの接続を許可するようにMySQLに指示する方法がありません。しかし、 。
これはthis questionと非常によく似ていますが、後者には私が探している詳細は含まれていません。
EDIT:db
コンテナのDockerfile
のソース。
FROM centos:6.9
# Install MySQL (MariaDB)
# Warning: the repo is super slow in my experience (e.g.: 15 min for 191 MB.)
RUN yum -y update
ADD MariaDB.repo /etc/yum.repos.d/MariaDB.repo
RUN yum install -y MariaDB-server MariaDB-client
# Install supervisord
# EPEL = Extra Packages for Enterprise Linux -- used for python
RUN rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum install -y python-pip && pip install "pip>=1.4,<1.5" --upgrade
RUN pip install supervisor
##
# START SERVER
# port 22: SSH
# port 80: TCP, HTTP
# port 8025: MailHog UI (web)
##
ADD supervisord-db.conf /etc/supervisord.conf
EXPOSE 22 80 8025
CMD ["supervisord", "-n"]
# MEMO · BUILD THE IMAGE:
# docker build -t fab/centosdb .
これはmysqlを指していますか? db:3306( 'web'が参照するホスト名は' db'です) – Robert
アプリ構成ファイル – Robert
の 'fab/centosdb'画像の' Dockerfile'を投稿してください。 @ロバートが言ったように 'db'サービス – kstromeiraos