从docker容器连接到mysql数据库

前端之家收集整理的这篇文章主要介绍了从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容器.

猜你在找的Docker相关文章