我使用 Docker 在 Symfony3 项目上安装了一个数据库备份包 ( https://github.com/dizda/CloudBackupBundle ),但我无法让它工作,因为它找不到 PHP 或找不到 MySQL
当我php app/console --env=prod dizda:backup:start通过 exec、run 或通过 cron 运行时。我通过 PHP 映像收到 mysqldump 命令未找到错误,或从 Mysql/db 映像收到 PHP 未找到错误。
如何运行 php 命令,然后运行 mysqldump 命令。
我的 docker-compose 文件如下:
version: '2'
services:
web:
# image: nginx:latest
build: .
restart: always
ports:
- "80:80"
volumes:
- .:/usr/share/nginx/html
links:
- php
- db
- node
volumes_from:
- php
volumes:
- ./logs/nginx/:/var/log/nginx
php:
# image: php:fpm
restart: always
build: ./docker_setup/php
links:
- redis
expose:
- …Run Code Online (Sandbox Code Playgroud) 我们在应用程序中使用 docker-compose,但不熟悉应用程序的这一部分,我们在运行后收到此错误docker-compose up --build:
Mysql: forward host lookup failed: Unknown host
Run Code Online (Sandbox Code Playgroud) 我在具有 1 个主节点和 3 个工作节点的 docker swarm 集群上启动了 Flask API 服务。我已经使用以下 docker compose 文件部署了任务,
version: '3'
services:
xgboost-model-api:
image: xgboost-model-api
ports:
- "5000:5000"
deploy:
mode: global
networks:
- xgboost-net
networks:
xgboost-net:
Run Code Online (Sandbox Code Playgroud)
我使用以下 docker swarm 命令部署了该任务,
docker stack deploy --compose-file docker-compose.yml xgboost-swarm
Run Code Online (Sandbox Code Playgroud)
但是,该任务仅在我的主节点上启动,而不在任何工作节点上启动。
$ docker service ls
ID NAME MODE REPLICAS IMAGE
pgd8cktr4foz viz replicated 1/1
dockersamples/visualizer
twrpr4av4c7f xgboost-swarm_xgboost-model-api global 1/4 xgboost-model-api
xxrfn1w7eqw6 dockercloud-server-proxy global 1/1 dockercloud/server-proxy
Run Code Online (Sandbox Code Playgroud)
使用的 Dockerfile 在这里。任何关于为什么会发生这种行为的想法将不胜感激。
我试图在 docker 上用不同的版本重新组装一个用于 elasticsearch 的容器,但我仍然有这个错误。
org.elasticsearch.bootstrap.StartupException: ElasticsearchException[java.io.IOException: failed to read [id:1, legacy:false, file:/usr/share/elasticsearch/data/nodes/0/_state/node-1.st]]; nested: IOException[failed to read [id:1, legacy:false, file:/usr/share/elasticsearch/data/nodes/0/_state/node-1.st]]; nested: IllegalArgumentException[[node_meta_data] unknown field [node_version], parser not found];
Run Code Online (Sandbox Code Playgroud)
这是我的 elasticsearch 配置 DockerFile:
ur_elasticsearch:
container_name: "ur_elasticsearch"
image: docker.elastic.co/elasticsearch/elasticsearch:5.3.1
environment:
- xpack.security.enabled=false
- http.host=0.0.0.0
- transport.host=127.0.0.1
ports:
- "9200:9200"
volumes:
- ./db-files/elasticsearch-data:/usr/share/elasticsearch/data
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
interval: 60s
timeout: 30s
retries: 3
Run Code Online (Sandbox Code Playgroud)
19.03.5, build 633a0ea8381.24.0, build 0aa59064{
"containerDefinitions": [
{
"name": "container-using-efs",
"image": "amazonlinux:2",
"entryPoint": [
"sh",
"-c"
],
"command": [
"ls -la /mount/efs"
],
"mountPoints": [
{
"sourceVolume": "myEfsVolume",
"containerPath": "/mount/efs",
"readOnly": true
}
]
}
],
"volumes": [
{
"name": "myEfsVolume",
"efsVolumeConfiguration": {
"fileSystemId": "fs-1234",
"rootDirectory": "/path/to/my/data"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个 EFS 文件系统,分配给它的安全组允许入站 NFS,并且 EFS 使用该安全组以及我的 ECS 集群使用的子网和 VPC
问题
当我使用 AWS 管理控制台在我的任务定义中创建挂载点时,我必须输入containerPathelsemountPoints未反映在我的 JSON 中
题
1)我应该containerPath在mountPoints什么之下?
2)我应该指定一个rootDirectoryunder …
amazon-web-services amazon-ecs docker dockerfile docker-compose
version: '3'
services:
db:
image: "mysql:5.7"
volumes:
- data-mysql:/var/lib/mysql
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
data-mysql:
driver: local
Run Code Online (Sandbox Code Playgroud)
谢谢曼尼
我正在使用 this_repo开始使用 Docker 运行 ELK。
我的问题是关于 docker-compose 文件中的 logstash 图像:
当我在本地运行时,我有 3 个文件
#general settings
logstash.yml
#pipeline setting
pipeline.yml
#a pipe line configuration
myconf.conf1
Run Code Online (Sandbox Code Playgroud)
当我想使用多管道时,我使用 pipeline.yml 文件来控制我正在运行的所有不同管道
# Example of my pipeline.yml
- pipeline.id: my-first-pipeline
path.config: "/etc/logstash/my-first-pipeline.config"
pipeline.workers: 2
- pipeline.id: super-swell-pipeline
path.config: "/etc/logstash/super-swell-pipeline.config"
queue.type: persisted
Run Code Online (Sandbox Code Playgroud)
在我用作指南的回购中,我只能找到 logstash.yml,我不明白如何添加管道。唯一运行的管道是默认的“main”,默认情况下只运行 logstash.conf 我尝试了不同的配置,所有字段
如何将 pipeline.yml 添加到 docker?或者使用这个 docker-compose 文件运行多管道的最佳实践是什么?
感谢任何帮助
docker-compose/logstash 形成 repo:
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: …Run Code Online (Sandbox Code Playgroud) 我一直在尝试为 mongodb 设置密码
我的 docker-compose 文件是
version: "3"
services:
mongo:
image: mongo
ports:
- "27016:27017"
volumes:
- ./data:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=password
- MONG_INITDB_DATABASE=example
Run Code Online (Sandbox Code Playgroud)
现在在运行 docker 容器后,当我进入容器后尝试时
mongo mongodb://root:password@localhost:27017
Run Code Online (Sandbox Code Playgroud)
连接成功,
MongoDB shell 版本 v4.2.7 连接到: mongodb://localhost:27017/?compressors=disabled&gssapiServiceName=mongodb 隐式会话: session { "id" : UUID("71ec853d-3a05-4367-aa9f-d0a69217fb7d" version) : 4.2.7 服务器有启动警告: 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] 是使用 XFSN 文件系统的 **强烈推荐使用 WiredTiger 存储引擎 2020-06-16T17:43:51.837+0000 I STORAGE [initandlisten] ** 见
但是当我尝试
mongo mongodb://root:password@localhost:27017/example
Run Code Online (Sandbox Code Playgroud)
认证失败。MongoDB shell 版本 v4.2.7 连接到:mongodb://localhost:27017/example?compressors=disabled&gssapiServiceName=mongodb 2020-06-16T17:51:08.226+0000 E QUERY …
我有两个码头集装箱。一个容器是数据库,另一个是 Web 应用程序。Web 应用程序通过此链接 http://localhost:7200 调用数据库。但是,Web 应用程序 docker 容器无法到达数据库容器。
我试过这个 docker-compose.yml,但不起作用:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build:
context: .
dockerfile: ./docker/web/Dockerfile
links:
- graph-db
depends_on:
- graph-db
ports:
- "8080:8080"
environment:
- WAIT_HOSTS=graph-db:7200
networks:
- backend
graph-db:
# will build ./docker/graph-db/Dockerfile
build:
./docker/graph-db
hostname: graph-db
ports:
- "7200:7200"
networks:
backend:
driver: "bridge"
Run Code Online (Sandbox Code Playgroud)
所以我有两个容器: Web 应用程序:http://localhost:8080/reasoner,这个容器调用位于不同容器中的 http://localhost:7200 中的数据库。但是,Web 容器无法访问数据库容器。
解决方案
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build:
context: .
dockerfile: ./docker/web/Dockerfile
depends_on:
- graph-db
ports:
- …Run Code Online (Sandbox Code Playgroud) 我遇到了容器内容的差异,这取决于我是通过docker run -i -t <container> bash还是打开 bash shell docker-compose run <container> bash,但我不知道/不明白这是怎么可能的。
为了帮助解释,请从我的终端查看此屏幕截图。在这两种情况下,我都在运行根据我的代码blaze构建的名为的图像Dockerfile。一个构建过程中的步骤是创建一个名为virutalenv venv,但是当我打开通过bash shell的docker-compose这个virtualenv中似乎并没有我跑的时候不像存在docker run ...。
我对使用 Docker 设置自己的构建比较陌生,但是如果它们都引用相同的图像,那么lsbash shell 中的输出应该是相同的吗?我将不胜感激任何对资源的帮助或指导,以解释这里究竟出了什么问题......
另外一点,运行 docker images 表明两个命令必须使用相同的图像......
提前致谢!
这是我的Dockerfile:
FROM blaze-base-image:latest
# add an URL that PIP automatically searches (e.g., Azure Artifact Store URL)
ARG INDEX_URL
ENV PIP_EXTRA_INDEX_URL=$INDEX_URL
# Copy source code to docker image
RUN mkdir /opt/app
COPY . /opt/app
RUN ls …Run Code Online (Sandbox Code Playgroud) docker ×10
docker-compose ×10
mysql ×3
dockerfile ×2
amazon-ecs ×1
bash ×1
docker-swarm ×1
logstash ×1
mongodb ×1
php ×1
python ×1
swarm ×1
symfony ×1
virtualenv ×1