我想用 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,但它没有解决任何问题。
我想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 服务器,但我想以更自动化的方式处理它。
嗨,我正在使用 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) 我尝试通过 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) 类似的问题已被问过很多次,我已经解决了大部分问题,但仍然无法解决问题。
我在不同的 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) 我刚开始使用码头工人,但我不明白一些事情。我只是使用 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
我正在尝试将工作中的 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) 我正在尝试使用 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
我有以下文件夹结构:
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, …
如果我想在我的容器中运行一个 python 脚本RUN,如果我可以在运行脚本的同时在构建时传递一个参数,那么使用该命令有什么意义?
每次运行容器时,我都希望在构建阶段传入x.py的ENV变量上运行。
如果我使用 Swarm,并且唯一的目标是运行 x.py 脚本,那么 swarm 只会构建节点,而不是构建并最终运行,因为CMD和ENTRYPOINT指令仅在运行时发生。
我错过了什么吗?
docker ×10
docker-compose ×10
apache ×2
dockerfile ×2
php ×2
azure-devops ×1
curl ×1
mailcatcher ×1
persistence ×1
postgresql ×1
sockets ×1
solr ×1
vagrant ×1
vagrantfile ×1
wordpress ×1