簡體   English   中英

如何使用Docker容器運行服務器?

[英]how to run server using docker container?

Django服務器在localhost中運行良好。 但是,當我嘗試在docker容器上運行服務器時,使用docker-compose文件時找不到manage.py文件,即使我手動運行容器並運行服務器,它也不會出現在瀏覽器中。 我怎么解決這個問題?

因此,我在本地服務器上編寫了所有代碼測試,並使用dockerfile構建了項目的映像。

我試圖在docker容器上運行服務器,突然這無法運行。 更糟糕的是,如果我使用docker-compose來運行服務器,盡管我已經使用'docker run -it $ image_name sh'進行了檢查,但找不到manage.py文件。

這是我的項目的代碼

我是Docker的新手,也是編程的新手。 希望你能給我幫助。 謝謝!

文件結構

current directory
└─example
└─db.sqlite3
└─docker-compose.yml
└─Dockerfile
└─manage.py
└─Pipfile
└─Pipfile.lock 

Docker文件

# Base image - Python version
FROM python:3.6-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory
WORKDIR /code

# Copy Pipfile
COPY Pipfile /code
COPY Pipfile.lock /code

# Install dependencies
RUN pip install pipenv
RUN pipenv install --system

# Copy files
COPY . /code/

泊塢窗,compose.yml

# docker-compose.yml
version: '3.3'

services:
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000

預期結果:在網絡瀏覽器中運行服務器(例如chrome)

實際結果 :

  • 當使用docker-compose時:出現如下錯誤:web_1 | python:無法打開文件'/code/manage.py':[Errno 2]沒有這樣的文件或目錄

  • 當在外殼上使用'docker run -it $ image_name sh'和'python manage.py runserver'手動運行容器時:服務器正在運行,但未連接到Web瀏覽器。 (不會顯示在瀏覽器中,例如chrome'

喲在很多方面都做過同樣的事情。 您已使用COPY命令復制了源文件,然后在docker-compose.yml文件中安裝了主機卷。 首先,您不需要卷,因為卷掛載用於持久存儲Docker容器生成和使用的數據。

以下簡化的Dockerfile和docker-compose文件將解決此問題。

# Base image - Python version
FROM python:3.6-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Copy files
COPY . /code/

# Set work directory
WORKDIR /code

# Install dependencies
RUN pip install pipenv
RUN pipenv install --system

docker-compose.yml-:

# docker-compose.yml
version: '3.3'

services:
  web:
    build: .
    command: python ./manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM