当前位置: 首页 > 知识库问答 >
问题:

使用Docker Compose时不能使用GitBash执行到容器中

谭兴学
2023-03-14

我在docker-compose.yml中使用tty:true,但老实说,这似乎没有什么不同。不是在一篇文章中抛出一堆问题,但无论发生了什么,这是否也是我只能在使用Docker Compose运行web服务器时才能在浏览器中访问web服务器的原因?

version: '3.8'

volumes:
  pgdata:
     external: true   

services:
    db:
        image: postgres
        container_name: trac-db
        tty: true
        restart: 'unless-stopped'
        environment:
            POSTGRES_PASSWORD: postgres
            POSTGRES_USER: postgres
            POSTGRES_DB: iol
        volumes:
            - pgdata:/var/lib/postgresql/data
        network_mode: 'host'
        expose:
            - 5432
    web:
        image: lindben/trac-server
        container_name: trac-server
        tty: true
        restart: 'unless-stopped'
        environment:
            ADDRESS: localhost
            PORT: 3000
            NODE_ENV: development
        depends_on:
            - db
        network_mode: 'host'
        privileged: true
        expose:
            - 1234
            - 3000
    ```

共有1个答案

梁丘钊
2023-03-14

我假设您在桌面上使用Docker,所以您可以Docker exec很好地使用powershell的原因是,对于windows来说,Docker是一个原生程序\命令,而对于基于bash的GitBash则是一个linux shell(bash=bourne-airch shell)。

因此,当使用需要tty的windows命令时,您需要某种“适配器”,例如winpty,以弥合Docker接口和Gitbash接口之间的差距。

这里有一个关于winpty的更详细的解释

抛开所有这些不谈,如果你只想使用compose选项,你最好建议一下这个问题

现在,关于您的web服务问题,我认为您实际上并没有使用expose标记公开您的应用程序。看一下docker-compose公开引用。您需要添加一个“ports”标记,如下所示:

db:
    ports:
      - "5432:5432"
web:
    ports:
      - "1234:1234"
      - "3000:3000"
 类似资料:
  • 我们什么时候应该使用Spring boot执行器。如果包括在内,它对应用程序内存和CPU使用有多大影响? 我目前正在使用Spring Boot 2. x。

  • 我对Hibernate有问题。我正在通过Flyway迁移创建表。下面显示了初始迁移脚本的一部分片段。该脚本确实运行(我可以在DEBUG模式下看到它)。 脚本运行后,Hibernate的验证器似乎没有使用我通过< code>javax.persistence提供的实体的表名。 为了清楚起见,这里有一些省略的实体: 查看日志,Flyway迁移正在运行,然后我收到Hibernate验证错误。 我无法确定

  • 我是应该考虑在Azure Cosmos DB中使用批量执行器来更新/插入5-10个文档,还是最好使用一个循环来逐个插入文档?

  • 我一直在尝试在运行debian wheezy的lxc容器中使用libnfc。在尝试了一些东西和库之后,因此证明了lxc方法的合理性,我最终到达了一个我不知道去哪里寻找的地步。 问题是主机看到的是我的usb设备,而不是容器。 我在容器的lxc配置文件中添加了以下内容: 当我在容器上尝试lsusb时,我得到: 鉴于主机给出: 这就是我要找的设备。 令人惊讶的是,容器可以看到设备: 我已经检查了libu

  • 一定有一些方法来使用执行器的endpoint,但我不能电线他们。 我有一个JavaConfig类,如下所示 但此配置在部署过程中引发错误。 没有Spring Boot应用程序,这种布线可以完成吗?

  • 启动一个名为nginx的Dockerized应用程序,然后在其中执行bash。令我吃惊的是,我在那个容器里找不到vim、vi甚至是yum。 请原谅我,因为我是非常新的docker和学习。 下面的命令可以用来再现问题。 我的主机是Ubuntu16.04,我使用的是最新的docker-engine和docker cli 请不要使用我的主机名(我已从15.04升级):slight_smile: 如有任何