代码之家  ›  专栏  ›  技术社区  ›  Kim Stacks

如何部署符号链接的react javascript文件以显示在docker容器中

  •  0
  • Kim Stacks  · 技术社区  · 5 年前

    我有一个Django作为后端,并作为前端项目在Docker容器中运行。

    目前,我所有的django和react代码都在同一个repo中。当测试 http://localhost:8000/frontend 会击中模板( index.html /frontend/templates/frontend 反过来又会提到 /frontend/static/dist/main.js )

    所以现在这个项目和Docker合作。

    项目结构如下:

    project_root
         |
         |---frontend (this is a Django app which contains the react files)
         |      |--- static
         |      |      |--- dist
         |      |              |--- main.js
         |      |              
         |      |--- templates
         |             |--- frontend
         |                     |--- index.html (this references the static/dist/main.js)
         |
         |
         |---... more Django apps
         |
         |--- compose
                 |
                 |---local
                       |
                       |---- django
                                |---- Dockerfile
                                |---- start
    

    目前,我的dockerfile在 /compose/local/django 看起来像这样:

    FROM python:3.6-alpine
    
    ENV PYTHONUNBUFFERED 1
    
    RUN apk update \
      # psycopg2 dependencies
      && apk add --virtual build-deps gcc python3-dev musl-dev \
      && apk add postgresql-dev \
      # Pillow dependencies
      && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
      # CFFI dependencies
      && apk add libffi-dev py-cffi \
      # Translations dependencies
      && apk add gettext \
      # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
      && apk add postgresql-client \
      # git
      && apk add --no-cache git
    
    # Requirements are installed here to ensure they will be cached.
    COPY ./requirements /requirements
    RUN pip install -r /requirements/project.local.txt
    
    COPY ./compose/production/django/entrypoint /entrypoint
    RUN sed -i 's/\r//' /entrypoint
    RUN chmod +x /entrypoint
    
    COPY ./compose/local/django/start /start
    RUN sed -i 's/\r//' /start
    RUN chmod +x /start
    
    WORKDIR /app
    
    ENTRYPOINT ["/entrypoint"]
    

    目标

    我希望我的react代码和django代码作为单独的回购协议。因为对前端react代码和后端django代码进行单独的ci/cd和单元测试会更容易。

    我试过的

    1. 有一个单独的项目文件夹,仅用于前端react代码,因此它将作为自己的git repo存在
    2. Django项目中的符号链接 /frontend/static/dist 指向具有相同文件夹名的react项目

    我从浏览器得到的抱怨是 /前端/静态/距离/主要.js 不见了。

    当我检查symlinked时,main.js肯定在那里。所以我想当Docker容器被构建时,文件没有被复制过来?

    我该如何解决?

    0 回复  |  直到 5 年前