相关疑难解决方法(0)

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
查看次数

docker容器连接本地postgresql

我运行 python 容器,我想连接 localhost postegresql。我尝试一些方法。但不工作。请跟我谈谈。我能怎么做 ?谢谢。

我已经在端口 5432 上运行 postegresql,创建数据库并授予用户。

运行 docker 命令

docker run --name=python3 -v ${pwd}:/code -w /code python
Run Code Online (Sandbox Code Playgroud)

蟒蛇代码

import psycopg2

def main():
    #Define our connection string
    conn_string = "host='localhost' dbname='testDB' user='test' password='test'"

    # print the connection string we will use to connect
    print ("Connecting to database\n    ->{}".format(conn_string))

    # get a connection, if a connect cannot be made an exception will be raised here
    conn = psycopg2.connect(conn_string)

    # conn.cursor will return a cursor object, you can use …
Run Code Online (Sandbox Code Playgroud)

python postgresql docker

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

如何从 Docker 容器获取主机的 udev 事件?

在 Docker 容器中,我正在寻找一种在主机上获取 udev 事件的方法。
使用udevadm monitor,它仅在容器中发回主机的内核事件。

问题是是否有办法检测主机的 udev 事件或将主机的事件转发到容器?

events udev docker

4
推荐指数
1
解决办法
2126
查看次数

如何从docker-compose创建的docker容器内部连接到本地计算机?

我有一个使用docker-compose创建的Docker容器。这是yml文件。

version: "3"
services:
  redis:
    image: "redis"
  web:
    image: "myimage"
    ports:
      - "8000:8000"
    environment:
      REDIS_HOST: redis
    volumes:
      - .:/usr/src/app
    depends_on:
      - "redis"
    command: ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

我的Web应用程序需要从此容器连接到本地计算机,因为我的本地计算机正在运行Docker容器的Web应用程序需要访问的另一个Web应用程序。我该怎么做呢?本地主机的web应用程序托管在其他端口(7777)上。

我已经从Docker容器内部看到了如何连接到计算机的本地主机?,并且使用“ extra_hosts”选项使它正常工作,但是我想知道是否还有另一种方法可以执行此操作?

docker docker-compose docker-network

4
推荐指数
1
解决办法
5531
查看次数

如何使用 docker 将 metricbeat 连接到 elasticsearch 和 kibana

我已经使用 docker compose 设置了 elasticsearch 和 kibana。localhost:9200elasticsearch部署在:而 kibana 部署在localhost:5601

尝试使用 docker run 部署 metricbeat 时,出现以下错误:

$ docker run docker.elastic.co/beats/metricbeat:6.3.2 setup -E setup.kibana.host=kibana:5601 -E output.elasticsearch.hosts=["localhost:9200"]

Exiting: Couldn't connect to any of the configured Elasticsearch hosts. Errors: [Error connection to Elasticsearch http://localhost:9200: Get http://localhost:9200: dial tcp [::1]:9200: connect: cannot assign requested address]

Exiting: Couldn't connect to any of the configured Elasticsearch hosts. Errors: [Error connection to Elasticsearch http://elasticsearch:9200: Get http://elasticsearch:9200: lookup elasticsearch on 192.168.65.1:53: no such host]
Run Code Online (Sandbox Code Playgroud)

我的 docker-compose.yml: …

elasticsearch docker metricbeat

4
推荐指数
1
解决办法
2984
查看次数

如何与 docker 共享本地 Postgres 数据库?

我有一个带有 PostgreS 数据库的 Django 项目。我需要在 docker 容器中使用我的本地数据库。如何与docker容器共享机器的本地主机?我的 docker-compose.yml:

  version: '3'
  services:
    web:
      build: ./
      network_mode: "host"
      command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput --i rest_framework && gunicorn orion-amr.wsgi:application --bind 0.0.0.0:8000 --workers=2"
      ports:
        - "${webport}:8000"
        - "${pgport}:${pgport}"
      env_file:
        - ./.env
Run Code Online (Sandbox Code Playgroud)

Django设置.py :

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': os.environ.get('pgdatabase'),
        'USER': os.environ.get('pguser'),
        'PASSWORD': os.environ.get('pgpassword'),
        'HOST': os.environ.get('pghostname'),
        'PORT': os.environ.get('pgport'),
    }
}
Run Code Online (Sandbox Code Playgroud)

我加了

listen_addresses = '*'  
Run Code Online (Sandbox Code Playgroud)

到postgresql.conf文件,下面是我的pg_hba.conf …

django postgresql docker docker-compose

4
推荐指数
1
解决办法
361
查看次数

从macOS上的Docker容器内部连接到localhost mysql服务器

如何从macOS上的docker容器连接到localhost mysql服务器?一种使用--add-host的方法,但这需要我传递一些名称,例如“ myhost”。macOS中有什么方法可以使从Docker容器内部对localhost的引用实际上是指Docker主机吗?

mysql macos docker osx-elcapitan

3
推荐指数
3
解决办法
1702
查看次数

Docker版本18.04.0-ce会忽略不支持的选项:network_mode

对于一个小项目,我希望Docker容器中的应用程序连接到计算机的本地主机。这个问题的答案:从Docker容器内部,如何连接到计算机的本地主机?告诉我首选的方法是--net="host"在docker run命令中使用。

我使用撰写文件来启动容器。而这个问题对我的net选项被重命名为network_mode: "host"。

这是撰写文件的开头

version: '3.6'
services:
  shiny:
    image: paulrougieux/eutradeflows
    deploy:
      restart_policy:
        condition: on-failure
    network_mode: "host"
    ports:
      - "3838:3838"
Run Code Online (Sandbox Code Playgroud)

当我启动这个文件时

 sudo docker stack deploy -c stackshiny.yml shiny
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Ignoring unsupported options: network_mode
Run Code Online (Sandbox Code Playgroud)

有关信息

$ sudo docker version
Client:
 Version:   18.04.0-ce
Server:
 Engine:
  Version:  18.04.0-ce
Run Code Online (Sandbox Code Playgroud)

如何启用从Docker容器到主机上数据库的连接?

shiny docker docker-compose

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

PHP 应用程序无法连接到 127.0.0.1 处的 docker mysql 容器

Mysql is in it's own docker-compose.yml as I want a mysql server up and running that any other php application can connect to. So I do not have php and mysql in the same docker-compose.yml. From the php application, I can connect to mysql if I use the mysql container's gateway ip address by looking it up and then hard coding it into the php application. docker inspect mysql-db. But docker will change that 172... ip address each time …

php mysql docker docker-compose

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

如何在docker镜像中运行signalr blazor客户端的StartAsync连接?

我创建了默认的 blazor 服务器端应用程序。然后添加Microsoft.AspNetCore.SignalR.Client和ChatHub类。然后编辑startup.cs文件(添加services.AddSignalR()和endpoints.MapHub<ChatHub>("/chatHub"))和index.razor页面。然后通过IIS Express运行。没关系。

然后添加docker支持并运行Docker主机。它不工作。因为只有集线器连接 StartAsync 方法不起作用。如何运行它?帮我?非常感谢你们。

错误是:

处理请求时发生未处理的异常。SocketException:无法分配请求的地址System.Net.Http.ConnectHelper.ConnectAsync(字符串主机,int端口,CancellationToken取消令牌)

HttpRequestException:无法分配请求的地址System.Net.Http.ConnectHelper.ConnectAsync(字符串主机,int端口,CancellationToken取消令牌)

索引.剃刀代码:

@code {
    private HubConnection _hubConnection;

    protected override async Task OnInitializedAsync()
    {
        _hubConnection = new HubConnectionBuilder()
            .WithUrl(NavigationManager.ToAbsoluteUri("/chatHub"))
            .Build();

        _hubConnection.On<string, string>("ReceiveMessage", (user, message) =>
        {
            var encodedMsg = $"{user}: {message}";
            StateHasChanged();
        });

        await _hubConnection.StartAsync(); // **DON'T WORK IN DOCKER HOST.**
    }
}
Run Code Online (Sandbox Code Playgroud)

Docker 文件:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["BlazorApp1/BlazorApp1.csproj", "BlazorApp1/"] …
Run Code Online (Sandbox Code Playgroud)

signalr docker asp.net-core blazor

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