首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将码头映像连接到由码头组成的网络

如何将码头映像连接到由码头组成的网络
EN

Stack Overflow用户
提问于 2020-02-23 23:01:04
回答 1查看 38关注 0票数 1

我有一个docker-compose.yml,它为开发定义了一个数据库和API映像,但我也有一个单独的Dockerfile,它为AWS部署构建API。为了在部署之前进行本地测试,我希望用docker-compose调出db映像,然后将API可部署映像连接到这个数据库实例。这是失败的,因为django.db.utils.OperationalError: (2005, "Unknown MySQL server host ''db'' (-2)")表示主机名不存在。

下面是相关的docker-compose.yml文件:

代码语言:javascript
复制
version: '3.7'
services:
  db:
    image: mysql:5
    volumes:
      - type: bind
        source: ./db/docker-entrypoint-initdb.d
        target: /docker-entrypoint-initdb.d
      - type: volume
        source: mysql-data
        target: /var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: toor
    networks:
      - backend
    ports:
      - '3306:3306'
volumes:
  mysql-data:
networks:
  backend:

启动API可部署映像的命令是:docker run -p 80:80 --env-file .env --network='<app>_backend' <image>

使用Django数据库配置:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ['RDS_DB_NAME'],
        'USER': os.environ['RDS_USERNAME'],
        'PASSWORD': os.environ['RDS_PASSWORD'],
        'HOST': os.environ['RDS_HOSTNAME'],
        'PORT': os.environ['RDS_PORT'],
    }
}

我的.env文件是:

代码语言:javascript
复制
RDS_DB_NAME='django'
RDS_USERNAME='root'
RDS_PASSWORD='toor'
RDS_HOSTNAME='db'
RDS_PORT=3306

我需要配置什么东西才能使DNS在这里正常工作,或者有什么可能出错?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-23 23:27:52

感谢@Zeitounator的链接,删除了.env中的所有引文,解决了我的问题。

这些语法规则适用于.env文件:

  • Compose期望env文件中的每一行都是VAR=VAL格式的。
  • 以#开头的行作为注释处理,并被忽略。
  • 空行被忽略。
  • 没有对引号的特殊处理。这意味着他们是VAL.的一部分。

.env

代码语言:javascript
复制
RDS_DB_NAME=django
RDS_USERNAME=root
RDS_PASSWORD=toor
RDS_HOSTNAME=db
RDS_PORT=3306
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60367710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档