我正在学习如何部署Web应用程序,我已经使用nginx和gunicorn做了一次,一切都很完美,但是现在我不得不使用Docker来完成工作,而我陷入了困境。
当我在没有Docker的情况下安装nginx时,我只是运行:
sudo systemctl start nginx
然后我去了我的网络服务器,看到nginx正在运行。但是我不明白为什么我不能使用docker-compose做它?我转到一个特定的网址,但没有任何反应。当我访问时:
docker exec -ti nginx bash
它仍然存在,它不知道诸如sudo,systemctl,start等命令。
正确的方法是什么?我已经读了10篇文章,但仍然不了解如何部署和运行Web应用程序(虽然不在localhost上)。
答案 0 :(得分:1)
您不需要ssh到nginx容器中并发出sudo systemctl start nginx command
。启动容器后,nginx将自动启动。
这是一个简单的docker-compose.yml
文件,用于启动nginx服务:
version: '3'
services:
nginxserver:
image: nginx
ports:
- "8080:80"
volumes:
- /opt/nginx:/usr/share/nginx/html:rw
运行以下命令以启动服务:
docker-compose -f docker-compose.yml up
该服务将启动,并且它将在http://localhost:8080/
的localhost上可用(请参见上述yaml文件中的端口映射部分)
另请参见yaml文件中的卷映射部分。本地目录/opt/nginx
映射到容器目录/usr/share/nginx/html
,这是默认的nginx根目录。
将/opt/nginx
替换为所需的任何本地目录,然后在其中放置一个简单的index.html
文件进行测试:
<html>
<body>
Hello world!
</body>
</html>
现在访问http://localhost:8080/
,您应该会看到Hello world消息。使用该本地目录部署文件。
答案 1 :(得分:1)
docker restart <container name>
就可以完成这项工作(如果您想重新启动nginx)docker run --name nginx -v /opt/nginx:/usr/share/nginx/html -p 8080:80 docker.io/nginx
现在卷曲http://<you machine ip>:8080
应该可以工作