【问题标题】:Connection between microservices written in different languages用不同语言编写的微服务之间的连接
【发布时间】:2020-02-12 14:32:44
【问题描述】:

我有一个使用 3 个微服务的小型 Web 应用程序。 HomeApp 是用 Flask 编写的,提供主页和登录页面。 WebApp 为用户资料和订单/产品提供服务。最后一个是mysql数据库。我已经将它们 docker 化并使用 docker-compose 同时运行它们。我试图找出一种将用户从 HomeApp 重定向到 Flask 内的 WebApp 的方法。是否可以通过简单地使用 docker-compose 创建的服务名称来做到这一点,或者我需要一些代理,如 nginx 或 envoy? 这就是我的想法: 主页应用:

def login():
web = os.getenv['web']
if request.method == "POST":
    username = request.form.get("username")
    password = request.form.get("password")

    usernamedata = db.execute("SELECT username FROM users WHERE username=:username",{"username": username}).fetchone()
    passworddata = db.execute("SELECT password FROM users WHERE username=:username",{"username": username}).fetchone()

    if usernamedata == None:
        render_template('login.html')
    else:
        for password_data in passworddata:
            if sha256_crypt.verify(password, password_data):
                  return redirect(web + "/user?=" + username)

这是我的 docker-compose:

version: '3'
services:
  web:
    image: go_test
    depends_on: 
      - mysql
    ports: 
      - "80:80"

  mysql:
    image: mysql_db
    ports: 
      - "3306:3306"

  flask:
    image: flask_app
    ports: 
      - "8080:8080"

web 是用 Golang 编写的 WebApp 服务。它会按照我想要的方式工作,还是应该在服务之间放置一个代理?

【问题讨论】:

    标签: python flask proxy docker-compose microservices


    【解决方案1】:

    如果您使用 docker 的 links 选项,您可能想要做的事情。 喜欢:

    flask:
        image: flask_app
        ports: 
          - "8080:8080"
        links:
          - "web:web"
    

    然后你可以在你的python代码中直接访问web

    因为 docker 的 links 选项使 etc/hosts 喜欢:

    172.0.0.3 web // example
    

    因此,您不需要在代码中输入web = os.getenv['web']

    见:

    链接服务的容器可以通过与别名相同的主机名访问,如果没有指定别名,则使用服务名。

    这是关于 docker links 选项的a document

    【讨论】:

    • 现在试过了,还是不行。我得到 name 'web' is not defined 并在主机文件中得到容器 id 而不是 web
    • 然后试试links: - "web:web"
    • 我使用的是第 3 版,所以 - web 应该可以工作,但不能。
    猜你喜欢
    • 2017-10-20
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2020-07-08
    • 2021-06-24
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多