我使用docker-compose构建了2个docker容器。我在Mac上使用Docker,没有boot2docker。
version: '2'
services:
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
一切正常。我成功安装了Drupal。
问题是:我想将SequelPro连接到我的数据库,但我没有连接到mysql容器。 我是码头初学者。 谢谢你的帮助 米莎
答案 0 :(得分:25)
您忘记将数据库端口暴露给主机,因此只需添加
即可mysql-server:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
然后使用以下方法连接到Sequel中的数据库:
user: root
password: root
host: localhost
port: 3306
如果您已经运行了本地mysql数据库,请更改端口
ports:
- "4306:3306"
然后连接到端口4306
而不是3306
。请注意,从drupal容器中,您仍将使用3306
答案 1 :(得分:6)
将主机端口4306(或任何其他可用端口)映射到docker mysql 3306,如:
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
ports:
- "4306:3306"
您应该可以使用127.0.0.1:4306
连接到docker mysqlmysql -u drupal -h 127.0.0.1 -P 4306 -p
答案 2 :(得分:2)
在我的情况下,我有mysql问题:8,更改为任何5,一切正常
答案 3 :(得分:0)
应该看起来更像这样:
version: '2'
services:
mysql-server:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql-server
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
(我不确定是否在全球范围内定义环境变量的工作,也许有人知道可以在这里纠正我的答案并简化它)
如您所见,您有2个服务,mysql-server和drupal-web。 Drupal-web链接您的数据库服务。两种服务都有自己的环境变量。
答案 4 :(得分:0)
version: "3.8"
services:
db-1:
container_name: db-1
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'db'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'user'
# You can use whatever password you like
MYSQL_PASSWORD: 'password'
# Password for root access
MYSQL_ROOT_PASSWORD: 'password'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3306:3306'
expose:
# Opens port 3306 on the container
- '3306'
# Where our data will be persisted
volumes:
- my-db:/var/lib/mysql
volumes:
my-db:
今天效果很好。但是,当我使用image: mysql:latest