相关疑难解决方法(0)

无法使用 go 和 docker 连接到 mysql 服务器 - dial tcp 127.0.0.1:3306: connect: connection denied

我的 Mac 上安装了 Mysql 社区服务器,它已设置并正在运行,我可以使用 Navicat for MySQL 在 localhost:3306 上连接到它。但是,每当我尝试从使用 docker-compose 运行的 go 应用程序连接到数据库时,都会出现以下错误:

dial tcp 127.0.0.1:3306: connect: connection refused
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

// dbUser, dbPassword, & dbName are all variables that definitely contain the correct values
db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(localhost:3306)/"+dbName)

if err != nil {
    panic(err.Error())
}

defer db.Close()

query, err := db.Query("INSERT INTO test_table(test_field) VALUES(This is a test)")

if err != nil {
    panic(err.Error())
}

defer query.Close()
Run Code Online (Sandbox Code Playgroud)

我正在进口:

"database/sql"
_ "github.com/go-sql-driver/mysql"
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢。

mysql database go docker docker-compose

6
推荐指数
2
解决办法
1万
查看次数

在 Ubuntu 18.04 上访问 Docker 容器中的主机

我正在寻找一种方法来连接到 Docker 容器中的主机(在我的情况下,访问特定端口以在应用程序容器中使用代理)。

我试过network_mode: "host"(或docker run --network="host"),它在访问本地机器的情况下工作,但引起了一些其他问题,这些问题与将网络驱动程序更改为host:

SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失败:名称或服务未知。

ifconfig由于我使用的是 Ubuntu 18.04,所以我也不能用来定义网络别名。

我该怎么办?

docker

6
推荐指数
1
解决办法
1万
查看次数

使用 docker-compose 访问本地主机和 docker 网络

我在一个 docker-compose 文件中运行了两个不同的服务。我通过引用容器的服务名称来与每个服务交谈。

现在我希望我的容器 A 也能访问 localhost。为此,当我添加了“network_mode=host”的配置时,但这会产生一个错误,指出容器 A 无法与容器 B 通信。

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://mongo:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017
Run Code Online (Sandbox Code Playgroud)

对于每个撰写文件,docker-compose 创建一个网络,所以在这种情况下,我是否也应该手动将容器分配到专用网络?或者是否有任何解决方法可以访问这两个网络?

docker docker-compose

6
推荐指数
1
解决办法
2万
查看次数

如何在主机网络内 ping Docker-Container?

我现在使用 Docker 容器有一段时间了,但不知道如何 ping 属于我的主机网络一部分的 docker 容器。

因此,到目前为止,我创建了指定名称和网络标志的容器,如许多教程中所述,例如:https: //www.digitalocean.com/community/questions/how-to-ping-docker-container-from-another-container-按名字

我可以创建一个网络,然后在这些网络中运行我的容器,例如:

docker run -d --name web1  -n testnetwork
docker run -d --name web2  -n testnetwork
Run Code Online (Sandbox Code Playgroud)

这将使我能够通过以下方式互相 ping 容器:

docker exec -it web1 bash # enter container
ping web2 #ping second container
Run Code Online (Sandbox Code Playgroud)

现在我必须使用目前仅在“主机”网络中运行的给定应用程序。要从我的其他容器访问此容器,它们必须位于同一网络中(==“主机”)。

但我似乎无法再互相 ping 通我的容器了。我也无法使用容器的名称从主机对容器执行 ping 操作。

我是不是忽略了什么?

任何帮助,将不胜感激!此致

containers host ping remote-access docker

6
推荐指数
1
解决办法
9288
查看次数

asyncio客户端服务器在docker内部不起作用

我的客户端和服务器(通过http发送json消息)在我的标准ubuntu 16.04上工作正常

但是然后我尝试在docker内部运行客户端和服务器,或者在docker内部运行客户端和服务器,但出现错误。

我的泊坞窗命令:
sudo docker run -p 127.0.0.1:8888:8888 -i -t seo_server

这是我的服务器和客户端代码以及错误:

服务器

import asyncio
import json
import aiohttp
import re

async def get_cy(domain):           
    return {'result': 'ok','value':10}



async def handle(reader, writer):
    # data = await reader.read(1000)

    data = bytearray()
    while not reader.at_eof():
        chunk = await reader.read(2 ** 12)
        data += chunk

    # print(json.loads(data))
    # https://aiomas.readthedocs.io/en/latest/
    message = data.decode()

    addr = writer.get_extra_info('peername')
    print("Received %r from %r" % (message, addr))
    m = json.loads(message)
    f = m['method']
    del m['method']
    r = await …
Run Code Online (Sandbox Code Playgroud)

python python-3.x docker python-asyncio python-3.5

5
推荐指数
1
解决办法
600
查看次数

如何使Docker容器与未经Docker化的应用程序对话?

我遇到的一种情况是Docker容器必须与未经过docker化的应用程序以及其他主机中的docker容器进行通信。

假设有三个服务器A,B和C。服务器A有两个运行JBoss App Server容器的docker容器。服务器B(非docker主机)具有MySQL DB。服务器C具有另一组容器。

我希望JBoss应用程序服务器容器与驻留在另一台主机中的MySQL DB连接,并从DB中提取信息。JBoss还必须讨论服务器C中的容器。

如何做到这一点?

PS:我是Docker的新手

mysql jboss docker docker-engine

5
推荐指数
1
解决办法
1191
查看次数

将 phpMyAdmin docker 镜像连接到仅在 127.0.0.1 上侦听的 HOST MySQL 服务器

我希望将在容器 (Docker) 中运行的 PhpMyAdmin 连接到在主机上运行并在 127.0.0.1 上侦听的 MySQL 服务器。

但是,当我为 docker 提供 varuable -e PMA_HOST=127.0.0.1 时,它只会查看它自己的 Docker 网络......我如何才能与我的主机 MySQL DB 服务器通信?

mysql networking local phpmyadmin docker

5
推荐指数
1
解决办法
2046
查看次数

如何从本地主机连接到docker容器

我创建了一个运行 2 个 java 进程的 docker 容器 - 其中一个进程正在侦听端口 4444,并且应该可以通过浏览器访问以下 URL:

http://{主机}:4444/grid/console

如何从主机上的浏览器访问此 URL - 连接到端口 4444 上的容器?

这是 docker 检查的响应:

[
    {
        "Id": "3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde",
        "Created": "2018-02-22T14:54:37.025854258Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 12320,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-02-22T14:54:37.487535484Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:422dc563ca3260ad9ef5c47a1c246f5065d7f177ce51f4dd208efd82967ff182",
        "ResolvConfPath": "/var/lib/docker/containers/3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde/hostname",
        "HostsPath": "/var/lib/docker/containers/3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde/hosts",
        "LogPath": "/var/lib/docker/containers/3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde/3bef855324d8c78fcd3a7ac4e52d1641437f221ebe64af5651641d776cfa1bde-json.log",
        "Name": "/hint-env",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "", …
Run Code Online (Sandbox Code Playgroud)

linux selenium-grid docker docker-machine

5
推荐指数
1
解决办法
2万
查看次数

如何将 docker-compose 连接到容器网络和本地主机网络

如何设置 docker-compose 文件以连接到内部容器网络和外部本地主机网络?

我尝试在 docker-compose 中使用 extra_hosts 属性,但无法获得我需要的结果

我的 docker-compose 包含以下内容:

version: '3.7'

    services:

        myapp1:
            container_name: 
                  myapp1
            hostname:
                  myapp1
            build: 
                  context: 
                       .
                  dockerfile: 
                       Dockerfile
            command: 
                  ["npm", "start"]
            networks:
                  - container_network # This is an internal container network

        myapp2:
             ... # Same idea as above
            networks:
                  - container_network # This is an internal container network

    networks: 

         container_network:
              name:
                   container_network
              driver: 
                   bridge
Run Code Online (Sandbox Code Playgroud)

我还有一个独立的服务,我使用以下命令运行它:

docker run --name standalone_service --network host
Run Code Online (Sandbox Code Playgroud)

还有其他与我的问题无关的原因,即为什么standalone_service无法合并到docker-compose文件中。因此,将其合并到 docker-compose 文件并使用 container_network 不是此服务的选项。

我希望属于内部container_network的一部分的myapp1能够访问主机网络上的standalone_service。我该怎么做呢?

docker docker-compose

5
推荐指数
1
解决办法
3万
查看次数

Docker 和 mvn build - 无法通过单元测试,因为 DB 需要另一个容器运行?

我有一个带有以下 docker 文件的标准 Spring Boot 应用程序:

FROM maven:latest AS maven

WORKDIR /usr/src/app
COPY . /usr/src/app
# Compile and package the application to an executable JAR
RUN mvn package

FROM amazoncorretto:17-alpine-jdk

ARG JAR_FILE=app.jar

WORKDIR /opt/app

# Copy the jar from the maven stage to the /opt/app directory of the current stage.
COPY --from=maven /usr/src/app/target/${JAR_FILE} /opt/app/

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]
Run Code Online (Sandbox Code Playgroud)

我的application.properties文件具有与在 docker 容器中运行的 postgres 数据库的连接 spring:

# datasource
spring.datasource.url=jdbc:postgresql://db:5432/myApp?currentSchema=gpclinic&createDatabaseIfNotExist=true
spring.datasource.username=uname
spring.datasource.password=pword
Run Code Online (Sandbox Code Playgroud)

当我跑步时:

docker build -t myApp .
Run Code Online (Sandbox Code Playgroud)

由于数据库容器未运行,单元测试失败,因此我遇到了失败。

我需要运行 Postgres …

java postgresql spring docker docker-compose

5
推荐指数
1
解决办法
1088
查看次数