在 Ubuntu 18.04 上托管使用 docker 构建的 Web 应用程序
Posted
技术标签:
【中文标题】在 Ubuntu 18.04 上托管使用 docker 构建的 Web 应用程序【英文标题】:Hosting web application built with docker on Ubuntu 18.04 【发布时间】:2021-10-09 15:08:52 【问题描述】:我有一个使用 Codeigniter 构建的 Web 应用程序。我最近在本地主机上的应用程序中实现了 Docker。现在如何在服务器上部署修改后的应用程序和 docker 容器。
我在下面提供了我的 docker-compose 文件。
version: '3.3'
services:
myapp:
image: docker.io/bitnami/codeigniter:3
container_name: app-backend
ports:
- '8000:8000'
volumes:
- '.:/app'
depends_on:
- mariadb
mariadb:
image: docker.io/bitnami/mariadb:10.3
container_name: app-marriadb
volumes:
- app_dbdata:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app_db
ports:
- '3307:3306'
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
app_dbdata:
【问题讨论】:
【参考方案1】:部署过程与我们在没有 docker 的情况下部署 Web 应用程序或网站时遵循的过程没有什么不同。只有以下更改是额外的,需要在服务器上完成。
我改变了虚拟主机,如下图。
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www
ErrorLog logs/docker.example.com_error.log
CustomLog logs/docker.example.com_access.log combined
ProxyPreserveHost On
ProxyRequests off
<Location />
ProxyPass http://localhost:8000/
ProxyPassReverse http://localhost:8000/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
然后对Apache做了如下改动
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ systemctl restart apache2
您应该能够使用域名从互联网访问您的网站或网络应用程序。也可以用letsencrypt添加https,步骤相同。
【讨论】:
以上是关于在 Ubuntu 18.04 上托管使用 docker 构建的 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 18.04 上的 FLTK:在 Dock 上设置图标的弹出文本
Ubuntu 上托管的 LAMP 应用程序的 AWS SSL 证书
如何在 Ubuntu 上托管/发布我的 .Net Core WebAPI?
Neo4j:Ubuntu 在 Microsoft Azure 上托管端点保护
部署到 Ubuntu 18.04 服务器后如何在 Laravel 中修复“未捕获的 ReflectionException:类视图不存在”