+-
从docker容器连接到mysql数据库
我有这个docker文件,它正在按预期工作.我有连接到localhost上的 mysql的php应用程序.

# cat Dockerfile
FROM tutum/lamp:latest
RUN rm -fr /app
ADD crm_220 /app/
ADD crmbox.sql /
ADD mysql-setup.sh /mysql-setup.sh
EXPOSE 80 3306
CMD ["/run.sh"]

当我尝试将数据库作为单独的容器运行时,我的PHP应用程序仍指向本地主机.当我连接到“ Web”容器时,我无法连接到“ mysql1”容器.

# cat docker-compose.yml
web:
  build: .
  restart: always
  volumes:
    - .:/app/
  ports:
    - "8000:8000"
    - "80:80"
  links:
    - mysql1:mysql

mysql1:
  image: mysql:latest
  volumes:
    - "/var/lib/mysql:/var/lib/mysql"
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: secretpass

我的php应用程序如何从另一个容器连接到mysql?

这类似于这里提出的问题…

Connect to mysql in a docker container from the host

我不想从主机连接到mysql,我需要从另一个容器连接.

最佳答案
首先,如果您不想从主机上调用mysql 3306端口,则不应该公开它.现在,第二个链接已被弃用.您可以改用网络.我不确定是否要编写v.1,但在v.2中,公共docker-compose文件中的所有容器都在一个网络( more about networks)中,并且可以通过彼此命名来解决. docker-compose v.2文件的示例:

version: '2'
services:
  web:
    build: .
    restart: always
    volumes:
      - .:/app/
    ports:
      - "8000:8000"
      - "80:80"
  mysql1:
    image: mysql:latest
    volumes:
      - "/var/lib/mysql:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: secretpass

通过这种配置,您可以在Web容器中通过名称mysql1解析mysql容器.

点击查看更多相关文章

转载注明原文:从docker容器连接到mysql数据库 - 乐贴网