标签: docker-compose

在Pycharm上通过docker-compose运行Python控制台

我在使用docker-compose通过远程python解释器运行pycharm时遇到了一些问题.一切都很好,除了Python控制台,当我按下运行按钮时它只显示以下消息:

"错误:无法从docker-compose输出中找到服务"web"的容器名称"

我真的不明白为什么它让我表明,如果我docker-compose.yml提供web服务.

有帮助吗?

编辑:

泊坞窗,compose.yml

version: '2'

volumes:
  dados:
    driver: local
  media:
    driver: local
  static:
    driver: local

services:
  beat:
    build: Docker/beat
    depends_on: 
      - web
      - worker
    restart: always
    volumes:
      - ./src:/app/src
  db:
    build: Docker/postgres
    ports:
      - 5433:5432
    restart: always
    volumes:
      - dados:/var/lib/postgresql/data
  jupyter:
    build: Docker/jupyter
    command: jupyter notebook
    depends_on: 
      - web
    ports:
      - 8888:8888
    volumes:
      - ./src:/app/src
  python:
    build:
      context: Docker/python
      args:
        REQUIREMENTS_ENV: 'dev'
    image: helpdesk/python:3.6
  redis:
    image: redis:3.2.6
    ports:
      - 6379:6379
    restart: always
  web: …
Run Code Online (Sandbox Code Playgroud)

python pycharm docker docker-compose

66
推荐指数
1
解决办法
2414
查看次数

Docker-compose 不再构建映像(AttributeError:cython_sources)

我正在构建一个 django-react 站点,突然我的 docker-compose 不再构建,尽管需求或图像版本发生了任何更改。

\n

我的requirements.txt 如下所示:

\n
Django>=3.2.4,<4.0\ndjangorestframework>=3.12.4,<3.14.0\ndjangorestframework-simplejwt>=4.8.0,<5.3.0\npsycopg2>=2.8.6,<2.9\ndrf-spectacular>=0.15.1,<0.30\ndjango-allauth>0.5,<1.0\ndj-rest-auth>=3.0,<4.0\n
Run Code Online (Sandbox Code Playgroud)\n

错误输出:

\n
 => [backend internal] load .dockerignore                                                                                                                                                                  0.0s \n => => transferring context: 234B                                                                                                                                                                          0.0s \n => [backend internal] load build definition from Dockerfile                                                                                                                                               0.0s \n => => transferring dockerfile: 933B                                                                                                                                                                       0.0s \n => [backend internal] load metadata for docker.io/library/python:3.9-alpine3.13                                                                                                                           0.5s \n => [backend 1/6] FROM docker.io/library/python:3.9-alpine3.13@sha256:a7cbd1e7784a35a098cedbc8681b790d35ff6030a5e13f043185e2465003a040                                                                     0.0s \n => [backend internal] load build context                                                                                                                                                                  0.0s \n => => transferring context: 2.53kB                                                                                                                                                                        0.0s \n => CACHED [backend 2/6] WORKDIR …
Run Code Online (Sandbox Code Playgroud)

cython pyyaml docker docker-compose

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

何时使用Docker-Compose以及何时使用Docker-Swarm

我试图理解D-ComposeD-Swarm之间的差异或相似之处.

通过阅读文档,我了解到docker-compose提供了一种机制,可以将不同的容器绑定在一起并协同工作,作为单个服务(我猜它使用与用于链接两个容器的--link命令相同的功能)

另外,我对docker-swarm的理解是它允许你管理不同docker-hosts的集群,每个docker-hosts都运行一些docker-images的几个容器实例.我们可以将连接定义为群中不同容器之间的覆盖网络(即使它们跨越群中的两个泊坞主机)将它们作为一个单元连接起来.

我想要了解的是docker-swarm成功的docker-compose和覆盖网络是连接容器的新(推荐)方式吗?

或者,docker-compose仍然是整个docker系列中不可或缺的一部分,并且可以使用它来连接容器以协同工作.如果是这样,docker-compose在群中的不同节点上使用容器?

或者是覆盖网络用于连接群集中不同主机的容器,而docker-compose用于创建内部链接?

此外,我还看到在docker文档中提到 -不再推荐链接,很快就会过时.

我有点困惑???

非常感谢!

docker docker-compose docker-swarm docker-swarm-mode

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

在docker-compose中使用主机ip

我想创建一个能够在不同服务器上运行的docker-compose文件.

为此,我必须能够在docker-compose.yml中的几个位置指定服务器的host-ip或主机名(所有容器都在运行).

例如,对于一个consul容器,我想要定义其他领事容器如何找到服务器.

consul:
  image: progrium/consul
  command: -server -advertise 192.168.1.125 -bootstrap
Run Code Online (Sandbox Code Playgroud)

我不想显然硬编码192.168.1.125.

我可以使用 env_file:来指定主机名或ip并在每个服务器上采用它,所以我将这些信息放在一个地方并在docker-compose.yml中使用它.但是这只能用于指定环境变量而不能用于广告参数.

有更好的解决方案吗?

docker docker-compose

62
推荐指数
5
解决办法
8万
查看次数

使用Docker Compose将文件复制到容器

我有一个Dockerfile地方,我将现有目录(含内容)复制到容器,工作正常:

Dockerfile

FROM php:7.0-apache
COPY Frontend/ /var/www/html/aw3somevideo/
COPY Frontend/ /var/www/html/

RUN ls -al /var/www/html
RUN chown -R www-data:www-data /var/www/html 
RUN chmod -R 755 /var/www/html 
Run Code Online (Sandbox Code Playgroud)

使用docker exec的目录列表的屏幕截图

但是,当我使用docker-compose.yml文件时,只有目录aw3somevideo,里面aw3somevideo没有任何内容.

docker-compose.yml:

 php:
    build: php/
    volumes:
      - ./Frontend/ :/var/www/html/
      - ./Frontend/index.php :/var/www/html/
    ports:
      - 8100:80
Run Code Online (Sandbox Code Playgroud)

空目录列表的屏幕截图

也许我不明白它的功能,volumes如果是这种情况,请告诉我如何通过docker-compose.yml文件将现有文件复制到容器中.

copy volumes docker docker-compose

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

如何在Docker撰写文件中逃避$美元符号?

我有一个YAML标量,当我尝试评估我的docker-compose.yml文件时抛出以下错误:

错误:服务"time_service"中"环境"选项的插值格式无效:"$ {Time.now}"

YAML:

---
version: '2'
services:
  time_service:
    build: "."
    environment:
      TIME: "${Time.now}"
Run Code Online (Sandbox Code Playgroud)

如何保持与写入相同的字符串输出,但避免让docker-compose将其解释为错误的字符串插值?

escaping docker-compose

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

docker 更新后,Mysql 未在 MacOS 上的 docker 容器中启动

我刚刚在 MacOS 上从 2.3 版升级到 Docker Desktop 2.4。突然间,我的 mysql 容器都不会启动。日志显示这是原因:

Different lower_case_table_names settings for server ('2') and data dictionary ('0').
Data Dictionary initialization failed.
Aborting
Run Code Online (Sandbox Code Playgroud)

数据库文件安装在我主机上的一个卷中,以便它们在重新启动之间保持不变。

我终于知道为什么了。发帖是为了回答。

mysql macos docker docker-compose

61
推荐指数
2
解决办法
8971
查看次数

如何在docker-compose.yml中为命名卷设置主机路径

下面的示例创建dbdata命名卷并在db服务中引用它:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local
Run Code Online (Sandbox Code Playgroud)

(来自/sf/answers/2497288741/)

我可以看到卷的路径默认为:

/ var/lib/docker/volumes/project_name _dbdata

我的问题是如何在主机上为dbdata卷配置路径.

volume docker docker-compose

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

Docker-compose检查mysql连接是否准备就绪

我试图确保我的应用程序容器在db容器启动和READY TO接受连接之前不运行迁移/启动.

所以我决定使用healthcheck并依赖于docker compose file v2中的选项.

在应用程序中,我有以下内容

app:
    ...
    depends_on:
      db:
      condition: service_healthy
Run Code Online (Sandbox Code Playgroud)

另一方面,db具有以下健康检查

db:
  ...
  healthcheck:
    test: TEST_GOES_HERE
    timeout: 20s
    retries: 10
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法,如:

  1. 确保创建db DIR test: ["CMD", "test -f var/lib/mysql/db"]
  2. 获取mysql版本: test: ["CMD", "echo 'SELECT version();'| mysql"]
  3. Ping管理员(将数据库容器标记为健康,但似乎不是有效的测试) test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]

有人有解决方案吗?

mysql docker dockerfile docker-compose

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

如何使用docker-compose为mongo数据库播种?

我正在尝试分发一组在几个链接容器中运行的连接应用程序,其中包含一个mongo数据库,该数据库需要:

  • 分发包含一些种子数据;
  • 允许用户添加其他数据.

理想情况下,数据也将保存在链接的数据卷容器中.

我可以mongo使用mongo不安装任何卷的基本实例将数据导入容器(dockerhub image:psychemedia/mongo_nomount- 这实际上是没有VOLUME /data/db语句的基本mongo Dockerfile )和Dockerfile以下行的配置:

ADD . /files
WORKDIR /files
RUN mkdir -p /data/db && mongod --fork --logpath=/tmp/mongodb.log && sleep 20 && \
mongoimport  --db testdb --collection testcoll  --type csv --headerline --file ./testdata.csv  #&& mongod --shutdown
Run Code Online (Sandbox Code Playgroud)

where ./testdata.csv在与./mongo-with-dataDockerfile 相同的目录()中.

我的docker-compose配置文件包括以下内容:

mongo:
  #image: mongo
  build: ./mongo-with-data
  ports:
    - "27017:27017"
  #Ideally we should be able to mount this against a host directory
  #volumes:
  # …
Run Code Online (Sandbox Code Playgroud)

mongodb docker docker-compose

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