加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从docker容器连接到mysql数据库

发布时间:2020-12-16 03:24:18 所属栏目:安全 来源:网络整理
导读:我有这个docker文件,它正在按预期工作.我有连接到localhost上的mysql的php应用程序. # cat DockerfileFROM tutum/lamp:latestRUN rm -fr /appADD crm_220 /app/ADD crmbox.sql /ADD mysql-setup.sh /mysql-setup.shEXPOSE 80 3306CMD ["/run.sh"] 当我尝试将

我有这个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"]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读