我正在使用 docker-compose 来管理多容器应用程序。其中 1 个容器需要访问主机上目录的内容。
根据有关 docker 和 docker-compose 的各种文档来源,这似乎很简单,但我正在努力使其正常工作。
event_processor:
environment:
- COMPOSE_CONVERT_WINDOWS_PATHS=1
build: ./Docker/event_processor
ports:
- "15672:15672"
entrypoint: python -u /src/event_processor/event_processor.py
networks:
- app_network
volumes:
- C/path/to/interesting/directory:/interesting_directory"
Run Code Online (Sandbox Code Playgroud)
运行此我收到错误消息:
错误:命名卷“C/path/to/interesting/directory:/interesting_directory:rw”用于服务“event_processor”,但未在卷部分找到声明。
这不是这里的情况。
我上面链接的 docker-compose 文档有一个示例,它似乎完全符合我的需要:
version: "3.2"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
networks:
webnet:
volumes:
mydata:
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时,我收到有关语法的错误:
错误:撰写文件 '.\docker-compose.yaml' 无效,因为:services.audio_event_processor.volumes 包含无效类型,它应该是字符串
所以我试着一起玩:
volumes:
- type: "bind"
source: "C/path/to/interesting/directory"
target: …Run Code Online (Sandbox Code Playgroud) 我想用 Docker 创建私有以太坊网络。我已经准备好了创世文件,所以我需要geth init genesis.json然后开始像geth --mine .... 我可以用脚本来做(比如这里:https : //github.com/vertigobr/ethereum/blob/master/runminer.sh#L5和https://github.com/vertigobr/ethereum/blob/master/runnode。 sh#L23):
if [ ! -d $DATA_ROOT/keystore ]; then
echo "$DATA_ROOT/keystore not found, running 'geth init'..."
docker run --rm \
-v $DATA_ROOT:/root/.ethereum \
-v $(pwd)/genesis.json:/opt/genesis.json \
$IMGNAME init /opt/genesis.json
echo "...done!"
fi
echo "Running new container $CONTAINER_NAME..."
docker run $DETACH_FLAG --name $CONTAINER_NAME \
--network ethereum \
-v $DATA_ROOT:/root/.ethereum \
-v $DATA_HASH:/root/.ethash \
-v $(pwd)/genesis.json:/opt/genesis.json \
$RPC_PORTMAP \
$IMGNAME --bootnodes=$BOOTNODE_URL $RPC_ARG --cache=512 --verbosity=4 --maxpeers=3 …Run Code Online (Sandbox Code Playgroud) groupadd:无效的组 ID 'laradock' 服务 'workspace' 无法构建:命令 '/bin/sh -c apt-get update -yqq && pecl channel-update pecl.php.net && groupadd -g ${PGID} laradock && useradd -u ${PUID} -g laradock -m laradock -G docker_env && usermod -p "*" laradock' 返回非零代码:3
我正在尝试从 /mnt/win/docker/ 运行 docker-compose(我已经更改了默认的 docker 目录以获得更多空间。不记得我配置了哪个文件来执行此操作)
我收到以下错误:
错误:compose.cli.errors.log_api_error:找不到指定的Dockerfile:Dockerfile
请参阅下面的 docker-compose.yml
我正在关注 wurstmeister/kafka-docker 程序:ref1:git wurstmeister ref2:教程
[liran@localhost docker]$ docker-compose --verbose up
compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.utils.config.find_config_file: Trying paths: ['/home/liran/.docker/config.json', '/home/liran/.dockercfg']
docker.utils.config.find_config_file: No config file found
docker.utils.config.find_config_file: Trying paths: ['/home/liran/.docker/config.json', '/home/liran/.dockercfg']
docker.utils.config.find_config_file: No config file found
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.22/version HTTP/1.1" 200 557
compose.cli.command.get_client: docker-compose version 1.22.0, build f46880fe
docker-py version: 3.4.1
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0f 25 May 2017
compose.cli.command.get_client: Docker base_url: http+docker://localhost
compose.cli.command.get_client: Docker …Run Code Online (Sandbox Code Playgroud)我曾经使用脚本 ( /docker-entrypoint-initdb.d/db_init.sh) 在复制到 postgres 容器的文件夹中循环数据库转储并恢复它们。它曾经很好地工作,但最近它停止工作。
我收到以下错误:
postgres_server_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/db_init.sh
postgres_server_1 | --> db_init.sh: Found /dumps/dataset_1.dump as dataset_1
postgres_server_1 | psql: could not connect to server: Connection refused
postgres_server_1 | Is the server running on host "localhost" (127.0.0.1) and accepting
postgres_server_1 | TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
该db_init.sh脚本循环遍历包含数据库转储的文件夹并检查数据库是否已存在。如果不是,它会恢复转储。
/docker-entrypoint-initdb.d/db_init.sh 内容:
shopt -s nullglob
for i in /dumps/*.dump;
do
db_name=${i##*/}
db_name=${db_name%.dump}
echo "--> db_init.sh: Found $i as $db_name"
if psql -U postgres -h localhost -lqt | …Run Code Online (Sandbox Code Playgroud) 想象一下,我有一个包含一些静态数据的 Docker 容器。
现在出于开发目的,我希望将容器目录的内容/resources安装到我的本地工作目录.。
docker-compose.yml:
version: '3.2'
services:
resources:
image: <private_registry>/resources:latest
volumes:
- ./resources:/resources
Run Code Online (Sandbox Code Playgroud)
运行时docker-compose up文件夹resources是在我的工作目录中创建的,但它没有内容,而容器中有内容/resources/
使用命名卷并检查它时,它按预期工作。
我一直在尝试使用 Spring Cloud Gateway、Eureka、配置服务和一些微服务创建一个 docker-compose 堆栈。这些服务在它们自己的、暴露的端口上启动和工作,配置服务工作并且 Eureka 注册这些服务。但是我无法让 Spring Cloud Gateway 工作。
服务正确启动(或者至少日志中没有错误),当我远程进入容器时,我能够请求我想要调用的服务,但是如果我尝试通过配置的路由请求它收到 404。
我的网关配置(为了方便,我结合了配置服务配置和 bootstrap.yml):
spring:
application:
name: gateway-service
cloud:
config:
uri: http://config-service:8080
eureka:
client:
serviceUrl:
defaultZone: http://discovery-service:8061/eureka/
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
spring:
cloud:
gateway:
routes:
- id: employee-service
predicates:
- "Path=/employee/**"
filters:
- StripPrefix=1
uri: "http://employee-service:8080"
Run Code Online (Sandbox Code Playgroud)
我很确定我只是误解了一些微不足道的事情,而且我离成功只有一步之遥,但是......我就是找不到它。
我期望发生的事情:
我的容器:
0.0.0.0:8080->8080/tcp, 8088/tcp employee-app_gateway-service_1
8088/tcp, 0.0.0.0:5082->5005/tcp, 0.0.0.0:8082->8080/tcp employee-app_employee-service_1
8088/tcp, 0.0.0.0:8011->8061/tcp employee-app_discovery-service_1
8088/tcp, 0.0.0.0:8012->8080/tcp employee-app_config-service_1
Run Code Online (Sandbox Code Playgroud) 我正在尝试从头开始创建我自己的MEAN解决方案,我想使用docker-compose来运行它。我已经成功地使 Node 服务器正常工作,但是当我尝试使用 docker运行Angular客户端时,这不起作用。
仅使用 docker 我运行以下命令:
docker build -t ng-client.
docker run -p 4200:4200 ng-client
从输出来看,它似乎正在工作,但是当我转到http://localhost:4200/ 时,我收到了 localhost 不工作的消息。
当我使用以下命令使用 docker-compose 时,我遇到了同样的问题:
docker-compose up
我的 Dockerfile 看起来像这样:
# based on https://mherman.org/blog/dockerizing-an-angular-app/
# base image
FROM node:8.9.3
# install chrome for protractor tests
# RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
# RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
# RUN apt-get update && …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Prometheus 容器从 cAdvisor 抓取指标。
这是我的 prometheus.yml:
global:
scrape_interval: 10s
evaluation_interval: 10s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "docker"
static_configs:
- targets: ['localhost:9323']
- job_name: "cadvisor"
scrape_interval: 5s
static_configs:
- targets: ['localhost:7070']
labels:
alias: "cadvisor"
Run Code Online (Sandbox Code Playgroud)
还有我的 docker-compose.yml:
version: "3.5"
services:
app:
container_name: app
build: "./app"
restart: always
volumes:
- ./app:/app
depends_on:
- db
links:
- db
ports:
- 8080:8080
db:
container_name: db
image: postgres
restart: always
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_DB=articlesdb
- POSTGRES_USER=dbuser
- POSTGRES_PASSWORD=dbpassword …Run Code Online (Sandbox Code Playgroud) docker-compose ×10
docker ×8
angular ×1
apache-kafka ×1
cadvisor ×1
deployment ×1
docker-image ×1
ethereum ×1
gateway ×1
geth ×1
keycloak ×1
laravel ×1
mean-stack ×1
monitoring ×1
postgresql ×1
prometheus ×1
spring ×1
spring-cloud ×1
windows ×1