Py学习  »  NGINX

在Docker撰写之后,nginx不运行服务器

Desiigner • 7 年前 • 1766 次点击  

我正在学习如何部署Web应用程序,我曾经使用过nginx和gunicorn,一切都很完美,但现在我不得不使用docker,我陷入困境。

当我在没有Docker的情况下安装nginx时,我只是运行:

sudo systemctl start nginx

然后我去了我的网络服务器,看到nginx在运行。但我不明白为什么我不能用Docker作曲?我转到一个特定的URL,什么都没有发生。当我访问时:

docker exec -ti nginx bash

它仍然不知道sudo、systemctl、start等命令。

正确的方法是什么?我读了10篇类似的文章,但仍然不理解如何部署和运行我的Web应用程序(尽管不是在本地主机上)。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39171
文章 [ 2 ]  |  最新文章 7 年前
Ciprian Stoica
Reply   •   1 楼
Ciprian Stoica    7 年前

您不需要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/ (见上述yaml文件中的端口映射部分)

另请参见yaml文件中的卷映射部分。本地目录 /opt/nginx 映射到容器目录 /usr/share/nginx/html ,这是默认的nginx根目录。

更换 /选择/nginx 无论您想要什么本地目录,只需将 index.html 在那里进行测试:

<html>
<body>
Hello world!
</body>
</html>

立即访问 http://localhost:8080/ 你应该看到世界的问候语。使用该本地目录部署文件。

Ijaz Ahmad Khan
Reply   •   2 楼
Ijaz Ahmad Khan    7 年前
  • 您不需要在Docker容器中运行SystemCtl
  • 只是 docker restart <container name> 将执行此操作(如果要重新启动nginx)
  • 你甚至不需要使用docker compose来运行nginx
  • 你可以跑了 docker run --name nginx -v /opt/nginx:/usr/share/nginx/html -p 8080:80 docker.io/nginx

现在卷曲 http://<you machine ip>:8080 应该工作