gpt4 book ai didi

symfony - 使用Docker部署Symfony应用

转载 作者:行者123 更新时间:2023-12-02 18:23:41 24 4
gpt4 key购买 nike

我之所以来到这里,是因为我使用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很清楚,引擎是带有某些扩展名和 Composer 的PHP-FPM,数据库是MariaDB,并带有一些插件来搜索ElasticSearch。

当我想部署webapp时,在不使用Docker进行部署之前,我曾使用Megallanes或Deployer。

使用Docker,我可以使用docker-compose文件并在服务器上重新创建图像和容器,也可以将容器保存在图像和tar存档中,并将其加载到服务器上。对于nginx和php-fpm都可以,但是elasticsearch和db呢?因为我需要保留数据以便将来更新代码。然后,当我部署代码时,我需要执行“Doctrine迁移”以及可能的一些命令,而Deployer可以与其他一些令人困扰的事情完美地结合在一起。以及如何使用Docker部署代码?我们可以同时使用吗?用于代码的部署者和用于服务的Docker?

非常感谢你的帮助。

最佳答案

首先,请尝试使用用户定义的网络,这些网络相对于传统链接(如嵌入式DNS)具有更多功能。这意味着您可以使用应用程序中的名称来调用同一网络上的其他容器。用户定义网络上的容器与另一个用户定义网络上的容器是隔离的。

要创建用户定义的网络:

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 imagetar命令在从以下位置挂载的 /dbdata中创建容器中 /backup的备份(考虑将其更改为dbdirectory)。您的Docker主机)。操作完成后,将删除临时容器(用于通过 --rm开关创建备份的ubuntu容器)。

恢复:

您将 tar存档复制到远程位置,并创建带有空装入卷的容器。然后使用以下命令提取该卷中的tar归档文件。
docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"

关于symfony - 使用Docker部署Symfony应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40416523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com