我有一个docker-compose文件(仅显示MySQL部分):
site_mysql:
image: site/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- site_mysqldata:/var/lib/mysql
networks:
- site_appnet
ports:
- "3306:3306"
我可以从容器内部连接到MySQL,但是从本地主机无法连接,出现的错误是“主机 site_mysql 未知”。
Docker 文件如下:
FROM mysql:5.7
MAINTAINER Author
# The official MySQL docker image will run all .sh and .sql scripts found in this directory
# the first time the container is started.
COPY init.sql /docker-entrypoint-initdb.d
COPY my.cnf /etc/mysql/conf.d
my.cnf:
[mysqld]
# Always use UTC
default-time-zone='+00:00'
# To turn off strict mode (alas, we started out that way, will be work to turn it on)
sql-mode="NO_ENGINE_SUBSTITUTION"
max-allowed-packet = 16M
### Per-thread Buffers
sort-buffer-size = 2M
read-buffer-size = 128K
read-rnd-buffer-size = 256K
join-buffer-size = 256K
### Temp Tables
tmp-table-size = 64M
max-heap-table-size = 64M
#### Storage Engines
default-storage-engine = InnoDB
innodb = FORCE
init.sql:
CREATE DATABASE IF NOT EXISTS site;
CREATE DATABASE IF NOT EXISTS site_test;
CREATE USER 'site'@'%' IDENTIFIED BY 'secret';
GRANT ALL PRIVILEGES ON site.* TO 'site'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
我使用相同的配置已经一段时间,用于不同的项目,一直都很好,但现在我的主机为什么无法识别site_mysql
?有任何想法吗?
更新
此外,我还有:
site_memcached:
image: memcached:1.4-alpine
networks:
- videosite_appnet
我可以使用site_memcached
作为主机名来连接。
localhost
但是仍无法连接,并且我尝试绑定到不同的端口,例如33066: 3306
,但也没有效果。目前在我的计算机上,我有另外两个基于docker的项目(所有容器都已关机因此不可能存在任何冲突),具有相同的配置,当我使用docker compose中的服务器名称时,它们全部工作正常。 - Bogdan Dubyk