请注意,这是一个 Traefik V2 问题。我在 V1 上有一个解决方案,但 V2 是一个彻底的重整。
以上应该将http://whoami.mysite.com重定向到 http s ://whoami.mysite.com。
没有其他文件。一切都在这个 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) 目前我已经设置了我的服务,如下所示。
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 中的一项服务?
我使用适用于 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) 我有一个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-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) 当我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,但它没有帮助.
我想用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 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-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) 我想将此 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-compose ×10
docker ×9
.net-core ×1
bind ×1
c# ×1
macos ×1
mysql ×1
traefik ×1
ubuntu ×1
ubuntu-14.04 ×1