我的 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)
任何帮助将不胜感激,谢谢。
我正在寻找一种方法来连接到 Docker 容器中的主机(在我的情况下,访问特定端口以在应用程序容器中使用代理)。
我试过network_mode: "host"(或docker run --network="host"),它在访问本地机器的情况下工作,但引起了一些其他问题,这些问题与将网络驱动程序更改为host:
SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失败:名称或服务未知。
ifconfig由于我使用的是 Ubuntu 18.04,所以我也不能用来定义网络别名。
我该怎么办?
我在一个 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 容器有一段时间了,但不知道如何 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 操作。
我是不是忽略了什么?
任何帮助,将不胜感激!此致
我的客户端和服务器(通过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) 我遇到的一种情况是Docker容器必须与未经过docker化的应用程序以及其他主机中的docker容器进行通信。
假设有三个服务器A,B和C。服务器A有两个运行JBoss App Server容器的docker容器。服务器B(非docker主机)具有MySQL DB。服务器C具有另一组容器。
我希望JBoss应用程序服务器容器与驻留在另一台主机中的MySQL DB连接,并从DB中提取信息。JBoss还必须讨论服务器C中的容器。
如何做到这一点?
PS:我是Docker的新手
我希望将在容器 (Docker) 中运行的 PhpMyAdmin 连接到在主机上运行并在 127.0.0.1 上侦听的 MySQL 服务器。
但是,当我为 docker 提供 varuable -e PMA_HOST=127.0.0.1 时,它只会查看它自己的 Docker 网络......我如何才能与我的主机 MySQL DB 服务器通信?
我创建了一个运行 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) 如何设置 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 文件的标准 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 …
docker ×10
mysql ×3
containers ×1
database ×1
go ×1
host ×1
java ×1
jboss ×1
linux ×1
local ×1
networking ×1
phpmyadmin ×1
ping ×1
postgresql ×1
python ×1
python-3.5 ×1
python-3.x ×1
spring ×1