微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从docker容器连接到mysql数据库

我有这个docker文件,它正在按预期工作.我有连接到localhost上的mysqlPHP应用程序.

# 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"]

当我尝试将数据库作为单独的容器运行时,我的程序仍指向本地主机.当我连接到“ 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容器.

原文地址:https://www.jb51.cc/docker/532644.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐