我来这里是因为我用Symfony3开发了一个应用程序。我有一些关于应用程序部署的问题。实际上我使用docker-compose:
version: '2'
services:
nginx:
build: ./docker/nginx/
ports:
- 8081:80
volumes:
- .:/home/docker:ro
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
networks:
- default
php:
build: ./docker/php/
volumes:
- .:/home/docker:rw
- ./docker/php/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro
working_dir: /home/docker
networks:
- default
dns_search:
- php
db:
image: mariadb:latest
ports:
- 3307:3306
environment:
- MYSQL_ROOT_PASSWORD=collectionManager
- MYSQL_USER=collectionManager
- MYSQL_PASSWORD=collectionManager
- MYSQL_DATABASE=collectionManager
volumes:
- mariadb_data:/var/lib/mysql
networks:
- default
dns_search:
- db
search:
build: ./docker/search/
ports:
- 9200:9200
- 9300:9300
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
networks:
- default
dns_search:
- search
volumes:
mariadb_data:
driver: local
elasticsearch_data:
driver: local
networks:
default:
nginx是清晰的,引擎是PHP-FPM和一些扩展和composer,db是MariaDB,搜索ElasticSearch和一些插件。
在我不使用Docker和部署之前,当我想部署webapp时,我使用Megallanes或Deployer。
使用Docker,我可以使用docker-compose文件并在服务器上重新创建图像和容器,我还可以将容器保存在图像和tar存档中,并将其加载到服务器上。对于nginx和php-fpm是可以的,但是elasticsearch和db呢?因为我需要保存数据,以便将来更新代码。然后,当我部署代码时,我需要执行Doctrine迁移,可能还需要执行一些命令,Deployer可以完美地完成其他一些有趣的事情。以及如何使用Docker部署代码?我们可以同时使用这两种方法吗?Deployer for code和Docker for services?
非常感谢你的帮助。
发布于 2016-11-04 15:59:43
这意味着您可以在应用程序中使用其他容器的名称来调用同一网络上的其他容器。用户定义的网络上的容器与另一个用户定义的网络上的容器隔离。
要创建用户定义的网络:
docker network create --driver bridge <networkname>
Dockerfile使用用户定义的网络示例:
search:
restart: unless-stopped
build: ./docker/search/
ports:
- "9200:9200"
- "9300:9300"
networks:
- <networkname>
第二:我注意到你的DB和ElasticSearch没有使用数据卷。您需要在某些点上挂载卷以保存您的持久性数据。
第三:当你导出你的容器时,它不会包含挂载的卷。您需要手动备份卷数据并进行迁移。
要备份卷数据,请执行以下操作:
docker run --rm --volumes-from db -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
上面的命令将创建一个容器,从DB容器挂载卷,并将容器中的当前目录挂载为/backup
,使用ubuntu image
和tar
命令在容器中创建/dbdata
的备份(请考虑将其更改为您的dbdirectory)从docker主机挂载的/backup
中。
要恢复,请执行以下操作:
将tar
归档文件复制到远程位置,并使用空的挂载卷创建容器。然后使用以下命令解压该卷中的tar归档文件。
docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
https://stackoverflow.com/questions/40416523
复制相似问题