标签: docker-compose

Docker 容器未写入卷

我想用 Docker 和 Docker-Compose 设置 ownCloud。为了实现这一点,我有一个带有 3 个容器及其卷的 docker-compose.yml。

version: '2'

  services:
    nginx:
      build: ./nginx
      networks:
        - frontend
        - backend
      volumes:
        - owncloud:/var/www/html
    owncloud:
      build: ./owncloud
      networks:
        - backend
      volumes:
        - owncloud:/var/www/html
        - data:/data
    mysql:
      build: ./mariadb
      volumes:
        - mysql:/var/lib/mysql
      networks:
        - backend

  volumes:
    owncloud:
      driver: local
    data:
      driver: local
    mysql:
      driver: local

  networks:
    frontend:
      driver: bridge
    backend:
      driver: bridge
Run Code Online (Sandbox Code Playgroud)

我也试过没有数据量。ownCloud 无法写入 /data 或没有此卷写入 /var/www/html/data。每当我访问 ownCloud 时,日志只显示时间戳。从 data:/data 更改为托管卷 /var/ownclouddata:/data 没有区别。

每个 Dockerfiles 只有一行:FROM:image

我试过添加 RUN mkdir /data,但它没有解决任何问题。

docker docker-compose docker-volume

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

Docker 使用 WordPress 连接邮件捕捉器

我想sendmail_path在 WordPress 的容器中设置一个并使用另一个容器提供的 sendmail。就我而言,它是 MailHog。

所以这是我的 docker-compose:

version: '2'
services:
    wordpress:
        image: wordpress
        links:
            - db:mysql
            - mailhog
        ports:
            - 80:80
        domainname: foo.com
        hostname: foo
        volumes:
            - ./public:/var/www/html
        environment:
            WORDPRESS_DB_PASSWORD: example
        depends_on:
           - mailhog

    mailhog:
        image: mailhog/mailhog
        ports:
            - 1025:1025
            - 8025:8025

    db:
        image: mariadb
        environment:
            MYSQL_ROOT_PASSWORD: example
Run Code Online (Sandbox Code Playgroud)

我尝试command: "echo 'sendmail_path = \"/usr/local/bin/mailhog sendmail\"' > /usr/local/etc/php/conf.d/mail.ini"在 WordPress 容器上执行,但它实际上打印了它......

这两个必须共享卷吗?

附注。我知道我可以将它用作 APP 中的 SMTP 服务器,但我想以更自动化的方式处理它。

wordpress docker mailcatcher docker-compose

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

访问在 Vagrant 中运行的 Docker 容器

嗨,我正在使用 vagrant 和 docker-compose 来运行一个简单的 Web 应用程序。它在 OSX 上运行良好,但是在流浪盒子 (ubuntu/trusty64) 中运行时它不起作用。

我不想将 docker provider 用于 vagrant,因为我正在为另一种类型的部署测试它。这应该可以工作,因为我正在做与在本地机器上完全相同的事情。

为什么我什至不能在应用程序上 curl localhost 端口 80(或我尝试过的任何端口)?

root@vagrant-ubuntu-trusty-64:/home/vagrant/slack-challenge# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                  NAMES
03f4740887d7        slackchallenge_nginx   "/bin/sh -c 'servi..."   43 minutes ago      Up 12 minutes       0.0.0.0:8080->80/tcp   slackchallenge_nginx_1
ed80831b69a9        slackchallenge_fpm     "/usr/bin/supervisord"   43 minutes ago      Up 12 minutes       9000/tcp               slackchallenge_fpm_1
140ea815843b        mariadb                "docker-entrypoint..."   43 minutes ago      Up 12 minutes       3306/tcp               slackchallenge_db_1
root@vagrant-ubuntu-trusty-64:/home/vagrant/slack-challenge# curl localhost
curl: (7) Failed to connect to localhost port 80: Connection …
Run Code Online (Sandbox Code Playgroud)

curl vagrant docker vagrantfile docker-compose

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

如何通过 unix socket 设置 Apache2 和 PHP-FPM?

我尝试通过 unix 套接字设置 Apache2 和 PHP-FPM,但结果是

(111)连接被拒绝:AH02454:FCGI:尝试连接到Unix域套接字/run/php/php7.2-fpm.sock(*)失败

docker-compose.yml

version: "2"
services:
    php:
        build: "php:7.2-rc-alpine"
        container_name: "php"
        volumes:
            - "./code:/usr/local/apache2/htdocs"
            - "./php7.2-fpm.sock:/run/php/php7.2-fpm.sock"
    apache2:
        build: "httpd:2.4-alpine"
        container_name: "apache2"
        volumes:
            - "./code:/usr/local/apache2/htdocs"
            - "./php7.2-fpm.sock:/run/php/php7.2-fpm.sock"
        ports:
            - 80:80
        links:
            - php
Run Code Online (Sandbox Code Playgroud)

配置文件

listen = /run/php/php7.2-fpm.sock
Run Code Online (Sandbox Code Playgroud)

httpd-vhosts.conf

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

但是当通过 TCP 连接时它是有效的。

配置文件

listen = 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)

httpd-vhosts.conf

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://php:9000"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

php sockets apache docker docker-compose

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

无法从 apache 2 docker 容器内连接到 php7 fpm docker 容器

类似的问题已被问过很多次,我已经解决了大部分问题,但仍然无法解决问题。

我在不同的 docker 容器中运行 Apache2 和 PHP 7 FPM,但它们无法相互连接。连接失败并出现以下错误。

[Tue Sep 19 00:05:51.743322 2017] [proxy:debug] [pid 336:tid 140441754191616] proxy_util.c(2422): [client 172.18.0.1:36332] AH00947: connected /var/www/html/info.php to 127.0.0.1:9000
[Tue Sep 19 00:05:51.743387 2017] [proxy:error] [pid 336:tid 140441754191616] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Tue Sep 19 00:05:51.743405 2017] [proxy_fcgi:error] [pid 336:tid 140441754191616] [client 172.18.0.1:36332] AH01079: failed to make connection to backend: 127.0.0.1
[Tue Sep 19 00:05:51.743410 2017] [proxy:debug] [pid 336:tid 140441754191616] proxy_util.c(2175): AH00943: FCGI: has released …
Run Code Online (Sandbox Code Playgroud)

php apache docker dockerfile docker-compose

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

Postgres Docker 持久化

我刚开始使用码头工人,但我不明白一些事情。我只是使用 docker-compose 来使用 PostgreSQL 的基本映像,但我不知道如何在杀死 docker 甚至删除我的本地映像后使数据库中的数据持久化。这有可能吗?

这是我实际的 docker-compose.yml:

version: "3"
services: 
  pintaecolorea_bd:
    image: postgres
    environment:
      POSTGRES_PASSWORD: <PASSWORD>
      POSTGRES_USER: postgres
    ports: 
      - "1234:5432"
    networks: 
      - "service"
networks:
  service:
Run Code Online (Sandbox Code Playgroud)

也许我应该使用卷?如何?

postgresql persistence configuration-files docker docker-compose

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

Solr 在单独的 docker 容器上使用 sunspot-rails

我正在尝试将工作中的 Rails 应用程序移动到 docker 环境。

遵循 UNIX(/docker) 哲学,我希望每个服务都在自己的容器中。

我设法让 redis 和 postgres 正常工作,但我正在努力让 slor 和 rails 相互交谈。

app/models/spree/sunspot/search_decorator.rb该行执行时在文件中

@solr_search.execute
Run Code Online (Sandbox Code Playgroud)

控制台上出现以下错误:

Errno::EADDRNOTAVAIL (Cannot assign requested address - connect(2) for "localhost" port 8983):
Run Code Online (Sandbox Code Playgroud)

在研究解决方案时,我发现人们只是将 solr 安装在与 Rails 应用程序相同的容器中。但我宁愿把它放在一个单独的容器里。

这是我的 config/sunspot.yml

development:
  solr:
    hostname: localhost
    port: 8983
    log_level: INFO
    path: /solr/development
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml文件

version: '2'
services:
  db:
    (...)

  redis:
    (...)

  solr:
    image: solr:7.0.1

    ports:
      - "8983:8983"

    volumes:
      - solr-data:/opt/solr/server/solr/mycores

    entrypoint:
      - docker-entrypoint.sh
      - solr-precreate
      - mycore

    networks:
      - backend

  app:
    build: …
Run Code Online (Sandbox Code Playgroud)

solr ruby-on-rails sunspot-rails docker docker-compose

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

VSTS docker 撰写任务

我正在尝试使用 VSTS 和 docker-compose 配置持续交付,我想将其推送到 Azure 容器注册表。这是我在 VSTS 上的构建定义: 在此处输入图片说明

我收到关于构建结果的错误消息:

No such command: docker_compose
Commands:
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the Compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
Run Code Online (Sandbox Code Playgroud)

你知道我该怎么处理吗?

更新:这是我的 docker-compose

version: '3'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-1.1
    volumes:
      - …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose azure-devops azure-pipelines-build-task azure-container-registry

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

构建依赖于本地“Dockerfile”的 docker 镜像

我有以下文件夹结构:

my_package
|- docker_compose.yml
|- a
   |- Dockerfile
|- b
   |- Dockerfile
Run Code Online (Sandbox Code Playgroud)

在这里,我的docker-compose.yml是:

version: '2'
services:
  a:
    build: 
      context: a
      dockerfile: Dockerfile
  b:
    build: 
      context: b 
      dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

当我运行时,docker-compose build我期望有两个输出图像,a一个用于b.

这是 a/Dockerfile

FROM ubuntu
RUN touch AAA
Run Code Online (Sandbox Code Playgroud)

这是 b/Dockerfile

FROM <a> # NOT SURE WHAT TO PUT HERE
RUN touch BBB
Run Code Online (Sandbox Code Playgroud)

我希望b图像在 rootdirAAA和 中包含两个文件BBB,这需要一个 Dockerfile 依赖于另一个。

这可能吗?是否有任何解决方法可以在一个docker-compose build命令中构建两个 Docker 映像(它们之间存在依赖关系)?

我坚持使用Docker version 1.12.6, …

docker docker-compose

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

Docker Build 和 Docker Run 的区别

如果我想在我的容器中运行一个 python 脚本RUN,如果我可以在运行脚本的同时在构建时传递一个参数,那么使用该命令有什么意义?

每次运行容器时,我都希望在构建阶段传入x.pyENV变量上运行。

如果我使用 Swarm,并且唯一的目标是运行 x.py 脚本,那么 swarm 只会构建节点,而不是构建并最终运行,因为CMDENTRYPOINT指令仅在运行时发生。

我错过了什么吗?

docker dockerfile docker-compose

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