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

docker-compose外部容器

发布时间:2020-12-16 03:41:21 所属栏目:安全 来源:网络整理
导读:我使用以下命令启动了一个docker容器 docker run --name mysql --restart always -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7.14 然后想将wordpress网站与以下docker-compose.yml文件连接起来 version: '2

我使用以下命令启动了一个docker容器

docker run --name mysql --restart always -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7.14

然后想将wordpress网站与以下docker-compose.yml文件连接起来

version: '2'

services:
    wordpress:
        image: wordpress
        external_links:
            - mysql:mysql
        ports:
            - 80:80
    environment:
        WORDPRESS_DB_USER: root
        WORDPRESS_DB_PASSWORD: password
    volumes:
        - /var/www/somesite.com:/var/www/html

但我不断收到以下错误

Starting somesitecom_wordpress_1
Attaching to somesitecom_wordpress_1
wordpress_1  | 
wordpress_1  | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 19
wordpress_1  | 
wordpress_1  | MySQL Connection Error: (2002) Connection refused

似乎external_links不起作用.

知道我做错了什么吗?

最佳答案
您的链接正常,但您在Docker内的不同网络上.从docker-compose.yml docs:

Note: If you’re using the version 2 file format,the externally-created containers must be connected to at least one of the same networks as the service which is linking to them.

要解决此问题,您可以创建自己的网络:

docker network create dbnet
docker network connect dbnet mysql

然后使用以下命令配置docker-compose.yml:

version: '2'

networks:
  dbnet:
    external:
      name: dbnet

services:
    wordpress:
        image: wordpress
        ports:
            - 80:80
        environment:
            WORDPRESS_DB_USER: root
            WORDPRESS_DB_PASSWORD: password
        volumes:
            - /var/www/somesite.com:/var/www/html
        networks:
          - dbnet

请注意,对于最新版本的Docker,您不需要链接容器,DNS服务应该为您执行名称解析.

(编辑:李大同)

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

    推荐文章
      热点阅读