标签: docker-compose

如何使用 Traefik 2.0 和 Docker Compose 标签将 http 重定向到 https?

请注意,这是一个 Traefik V2 问题。我在 V1 上有一个解决方案,但 V2 是一个彻底的重整。

以上应该将http://whoami.mysite.com重定向到 http s ://whoami.mysite.com。

  • 在HTTP小号工作很好。
  • http 不会重定向到 https 并引发错误 404。

没有其他文件。一切都在这个 Docker-compose.yml 中,因为它是准备进一步部署的测试。

version: "3.3"

services:

  traefik:
    image: "traefik:v2.0"
    container_name: "traefik"
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web-secure.address=:443"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge.entrypoint=web-secure"
      #- "--certificatesresolvers.myhttpchallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myhttpchallenge.acme.email=me@mail.com"
      - "--certificatesresolvers.myhttpchallenge.acme.storage=/letsencrypt/acme.json"
    labels:
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "containous/whoami"
    container_name: "whoami"
    labels:
      - "traefik.enable=true"
      - …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose traefik

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

如何为 docker compose 服务指定多个“env_files”?

目前我已经设置了我的服务,如下所示。

version: '3'
services:
  gateway:
    container_name: gateway
    image: node:lts-alpine
    working_dir: /
    volumes:
      - ./package.json:/package.json
      - ./tsconfig.json:/tsconfig.json
      - ./services/gateway:/services/gateway
      - ./packages:/packages
      - ./node_modules:/node_modules
    env_file: .env
    command: yarn run ts-node-dev services/gateway --colors
    ports:
      - 3000:3000
Run Code Online (Sandbox Code Playgroud)

所以我指定了一个env_file。但现在我想传递多个 .env 文件。

不幸的是,以下情况是不可能的:

    env_files:
       - .env.secrets
       - .env.development
Run Code Online (Sandbox Code Playgroud)

有没有办法将多个 .env 文件传递​​给 docker-compsoe 中的一项服务?

docker-compose

43
推荐指数
3
解决办法
2万
查看次数

在 MacOS 上使用 Intellij IDEA 和 Docker 桌面时找不到 Docker 套接字

我使用适用于 Apple M1 芯片的 Docker Desktop 下载了 Docker。我可以运行容器,与 VsCode 的集成工作正常,但我无法将其与 Intellij IDEA Ultimate 集成。它一直给出这个错误。 在此输入图像描述

但我可以从终端运行容器并创建映像,我还可以在 Docker Desktop 中看到容器和映像。这背后的原因可能是什么?我还尝试检查 var/run/docker.sock 是否存在,但实际上不存在,没有这样的文件。

我也在我的第二台计算机上尝试了相同的步骤,并且发生了完全相同的事情。重现步骤: 1- 下载 Intellij IDEA Ultimate,打开使用 docker 的存储库 2- 下载 Docker Desktop for Mac M1 3- 尝试将 Docker 服务添加到 Intellij

我没有做任何其他事情,因为我认为 Docker Desktop 足以配置 Mac 上的所有内容。我尝试在 intellij 上运行 FT,但出现错误

[main] ERROR o.t.d.DockerClientProviderStrategy - Could not find a valid Docker environment. Please check configuration. Attempted configurations were:
[main] ERROR o.t.d.DockerClientProviderStrategy -     UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (Could not find unix domain …
Run Code Online (Sandbox Code Playgroud)

macos intellij-idea docker docker-compose docker-desktop

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

Docker组成端口映射

我有一个docker-compose yml文件,如下所示

version: '2'
services:
  nodejs:
    build:
      context: .
      dockerfile: DockerFile
    ports:
      - "4000:4000"
    links:
      - redis
    expose:
      - "6379"
  redis:
    build:
      context: .
      dockerfile: Dockerfile-redis
Run Code Online (Sandbox Code Playgroud)

我的目标是将nodejs-127.0.0.1端口6379转发到redis主机.我已经可以从nodejs机器ping redis,但是没有映射端口.尝试暴露选项,但也没有机会.

docker docker-compose

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

连接到docker-compose的mysql容器拒绝访问但是运行相同图像的docker却没有

我有一些问题连接到我用docker-compose启动的mysql docker容器.这是一篇很长的帖子(对不起!).

这是我的docker-compose.yml文件:

db:
  image: mysql:5.7
  ports:
    - "3306:3306" # I have tried both ports and expose "3306". Still doesn't work 
  environment:
    - MYSQL_ROOT_PASSWORD="secret"
    - MYSQL_USER="django"
    - MYSQL_PASSWORD="secret"
    - MYSQL_DATABASE="myAppDB"
Run Code Online (Sandbox Code Playgroud)

然后:

$> docker-compose build
db uses an image, skipping #expected!
$> docker-compose up
<<LOTS OF OUTPUT>>
Run Code Online (Sandbox Code Playgroud)

好的,现在我有一个正在运行的docker容器运行器mysql:5.7.大!或者是吗?在我的django应用程序中进行测试时,我收到操作错误,表示不允许用户连接数据库.好的,那也许是我的django呢?

$> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c7216f99ca0f        mysql:5.7           "docker-entrypoint.sh"   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp   sharpfin_db_1

$> docker-machine ip dev
192.168.99.100
$> mysql -h 192.168.99.100 -P 3306 …
Run Code Online (Sandbox Code Playgroud)

mysql docker docker-compose

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

Docker错误绑定:已在使用的地址

当我docker-compose up在我的Docker项目中运行时,它会失败并显示以下消息:

Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
Run Code Online (Sandbox Code Playgroud)

netstat -pna | grep 3000 显示这个:

tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      -  
Run Code Online (Sandbox Code Playgroud)

我已经尝试过docker-compose down,但它没有帮助.

ubuntu bind docker ubuntu-14.04 docker-compose

42
推荐指数
13
解决办法
8万
查看次数

Docker Compose保持容器运行

我想用docker-compose启动服务并保持容器运行,这样我就可以通过'docker inspect'获取它的IP地址.但是,容器在启动后总是立即退出.

我试图将"command:["sleep","60"]"和其他东西添加到docker-compose.yml但是每当我用"command:..."添加行时我都不能称之为"docker-compose up"因为我将收到消息"无法启动容器.....系统错误:无效字符'k'寻找值的开头"

我也尝试将"CMD sleep 60"和诸如此类的东西添加到Dockerfile本身,但这些命令似乎没有被执行.

有没有一种简单的方法来保持容器存活或修复我的一个问题?

编辑:这是我想要运行的撰写文件:

version: '2'
services:
  my-test:
    image: ubuntu
    command: bash -c "while true; do echo hello; sleep 2; done"
Run Code Online (Sandbox Code Playgroud)

它运行正常如果我在OS X下使用docker-compose启动它,但是如果我在Ubuntu 16.04下尝试相同它会给我上面的错误消息.

如果我尝试使用Dockerfile的方法,Dockerfile看起来像这样:

FROM ubuntu:latest
CMD ["sleep", "60"]
Run Code Online (Sandbox Code Playgroud)

哪个似乎什么也没做

编辑2:我必须纠正自己,原来这是与Dockerfile和docker-compose.yml相同的问题:每次我将"CMD ..."添加到Dockerfile或添加"命令..."到撰写文件,我得到错误的无效字符.如果我删除这两个命令,它可以完美地工作.

docker docker-compose

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

Docker Compose不允许使用本地图像

以下命令失败,尝试从Docker Hub中提取图像:

$ docker-compose up -d
Pulling web-server (web-server:staging)...
ERROR: repository web-server not found: does not exist or no pull access
Run Code Online (Sandbox Code Playgroud)

但我只是想使用图像的本地版本,它存在:

$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
web-server           staging             b94573990687        7 hours ago         365MB
Run Code Online (Sandbox Code Playgroud)

为什么Docker不在本地存储的图像中搜索?


这是我的Docker Compose文件:

version: '3'
services:
  chat-server:
    image: chat-server:staging
    ports:
      - "8110:8110"
  web-server:
    image: web-server:staging
    ports:
      - "80:80"
      - "443:443"
      - "8009:8009"
      - "8443:8443"
Run Code Online (Sandbox Code Playgroud)

和我的.env文件:

DOCKER_HOST=tcp://***.***.**.**:2376
DOCKER_TLS_VERIFY=true 
DOCKER_CERT_PATH=/Users/Victor/Documents/Development/projects/.../target/docker
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

Docker 与 .NET Core、SQL Server、Elasticsearch 和 cerebro 服务组合

我正在尝试使用 docker-compose 文件运行许多服务。首先,我们假设 Docker 版本 20.10.3 在 Red Hat Enterprise Linux 版本 8.3 上运行。

这是 docker-compose 文件:

version: "3.8"
services:
  projmssql:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    container_name: proj-core-sqlserver
    environment:
        SA_PASSWORD: "mypassword"
        ACCEPT_EULA: "Y"
    ports:
      - "1401:1433"
    volumes:
      - type: bind
        source: ./data-mssql
        target: /var/opt/mssql/data
      - type : bind
        source: ./log-mssql
        target: /var/opt/mssql/log
    restart: always
  projelastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
    container_name: proj-core-elastic
    environment:
      - node.name=es01
      - cluster.name=proj-docker-cluster
      - discovery.type=single-node
      - bootstrap.memory_lock=false
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - path.repo=/usr/share/elasticsearch/backup
      - path.logs=/usr/share/elasticsearch/logs
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - …
Run Code Online (Sandbox Code Playgroud)

c# elasticsearch docker .net-core docker-compose

42
推荐指数
1
解决办法
1761
查看次数

Docker Compose 未定义卷

我想将此 docker CLI 命令(来自Smallstep/step-ca)转换为 docker-compose.yml 文件以运行docker compose(版本 2):

docker run -d -v step:/home/step \
    -p 9000:9000 \
    -e "DOCKER_STEPCA_INIT_NAME=Smallstep" \
    -e "DOCKER_STEPCA_INIT_DNS_NAMES=localhost,$(hostname -f)" \
    smallstep/step-ca
Run Code Online (Sandbox Code Playgroud)

此命令成功启动容器。

这是我“撰写”的撰写文件:

version: "3.9"
services:
  ca:
    image: smallstep/step-ca
    volumes:
      - "step:/home/step"
    environment:
      - DOCKER_STEPCA_INIT_NAME=Smallstep
      - DOCKER_STEPCA_INIT_DNS_NAMES=localhost,ubuntu
    ports:
      - "9000:9000"
Run Code Online (Sandbox Code Playgroud)

当我运行时docker compose up(再次,在这里使用 v2),我收到此错误

服务“ca”指的是未定义的卷步骤:无效的撰写项目

这是解决这个问题的正确方法吗?我想我错过了在 docker compose 项目中创建卷的额外步骤,但我不确定那会是什么,或者这是否是一个有效的用例。

docker docker-compose docker-volume

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