From 3145f10bd4e4e8826268eec3ed47bdf1990d0254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20L?= Date: Thu, 16 Feb 2023 15:31:42 +0100 Subject: [PATCH 1/4] Make the new admin available with docker compose --- Dockerfile.dev | 24 ------------------------ doc/contributing/getting_started.rst | 2 +- docker-compose.yml | 23 +++++++++++++++++++---- frontend/vue.config.js | 20 ++++++++------------ 4 files changed, 28 insertions(+), 41 deletions(-) delete mode 100644 Dockerfile.dev diff --git a/Dockerfile.dev b/Dockerfile.dev deleted file mode 100644 index edbb1d704..000000000 --- a/Dockerfile.dev +++ /dev/null @@ -1,24 +0,0 @@ -FROM python:3.9-alpine as base - -MAINTAINER Antoine Nguyen -ENV VIRTUAL_ENV=/opt/venv -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -FROM base as build - -RUN apk add --update openssl librrd python3-dev libffi-dev gcc g++ musl-dev libxml2-dev libxslt-dev \ - libressl-dev jpeg-dev rrdtool-dev file make \ - && rm -rf /var/cache/apk/* -RUN python3 -m venv $VIRTUAL_ENV -WORKDIR /tmp -COPY requirements.txt /tmp -COPY test-requirements.txt /tmp -RUN python -m pip install -U pip -RUN pip install -r requirements.txt -r test-requirements.txt - -FROM base as run -COPY --from=build $VIRTUAL_ENV $VIRTUAL_ENV -RUN apk add --no-cache --update librrd libxslt libjpeg libressl git rrdtool \ - && rm -rf /var/cache/apk/* -RUN mkdir /code -WORKDIR /code diff --git a/doc/contributing/getting_started.rst b/doc/contributing/getting_started.rst index f45b65f07..d286a4a0d 100644 --- a/doc/contributing/getting_started.rst +++ b/doc/contributing/getting_started.rst @@ -17,7 +17,7 @@ Then, just run the following command:: $ docker-compose up It will start the docker environment and make a Modoboa instance -available at ``http://localhost:8000``. +available at ``http://localhost:8000`` and the new admin interface at ``http://localhost:8080`` If you don't want to use docker or need a more complex development setup, go to the next section. diff --git a/docker-compose.yml b/docker-compose.yml index 5630bfb11..82747a3e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,13 +2,13 @@ version: '3' services: web: + container_name: modoboa_api + restart: always build: context: . - dockerfile: Dockerfile.dev - expose: - - "8000" + dockerfile: docker/Dockerfile.dev ports: - - "8000:8000" + - 8000:8000 environment: PYTHONPATH: ".." DB: "SQLITE" @@ -16,3 +16,18 @@ services: command: sh -c "cd test_project && python3 manage.py migrate && python3 manage.py load_initial_data && python3 manage.py runserver 0:8000" volumes: - .:/code + + new_admin: + container_name: modoboa_new_admin + restart: always + build: + context: . + dockerfile: docker/Dockerfile.admin.dev + ports: + - 8080:8080 + command: "" + volumes: + - ./frontend/:/home/node/ + command: "yarn serve" + depends_on: + - web diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 04e0c0436..cd62da792 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -1,16 +1,12 @@ module.exports = { devServer: { proxy: { - '/api': { - target: 'http://localhost:8000/' - } - } + "/api": { + target: "http://localhost:8000/", + }, + }, }, - transpileDependencies: [ - 'vuetify' - ], - publicPath: process.env.NODE_ENV === 'production' - ? '/new-admin/' - : '/', - outputDir: '../modoboa/frontend_dist' -} + transpileDependencies: ["vuetify"], + publicPath: process.env.NODE_ENV === "production" ? "/new-admin/" : "/", + outputDir: "../modoboa/frontend_dist", +}; From 6197543bd3554e7edca7e77ca9a62da1d2d49e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20L?= Date: Thu, 16 Feb 2023 15:54:20 +0100 Subject: [PATCH 2/4] New docker directory --- docker/Dockerfile.admin.dev | 8 ++++++++ docker/Dockerfile.dev | 24 ++++++++++++++++++++++++ frontend/.ash_history | 5 +++++ frontend/.yarnrc | 5 +++++ 4 files changed, 42 insertions(+) create mode 100644 docker/Dockerfile.admin.dev create mode 100644 docker/Dockerfile.dev create mode 100644 frontend/.ash_history create mode 100644 frontend/.yarnrc diff --git a/docker/Dockerfile.admin.dev b/docker/Dockerfile.admin.dev new file mode 100644 index 000000000..a400f3fdd --- /dev/null +++ b/docker/Dockerfile.admin.dev @@ -0,0 +1,8 @@ +FROM node:16.10-alpine + +ENV HOME=/home/node/ + +COPY ./frontend $HOME +WORKDIR $HOME + +RUN yarn install diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev new file mode 100644 index 000000000..edbb1d704 --- /dev/null +++ b/docker/Dockerfile.dev @@ -0,0 +1,24 @@ +FROM python:3.9-alpine as base + +MAINTAINER Antoine Nguyen +ENV VIRTUAL_ENV=/opt/venv +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +FROM base as build + +RUN apk add --update openssl librrd python3-dev libffi-dev gcc g++ musl-dev libxml2-dev libxslt-dev \ + libressl-dev jpeg-dev rrdtool-dev file make \ + && rm -rf /var/cache/apk/* +RUN python3 -m venv $VIRTUAL_ENV +WORKDIR /tmp +COPY requirements.txt /tmp +COPY test-requirements.txt /tmp +RUN python -m pip install -U pip +RUN pip install -r requirements.txt -r test-requirements.txt + +FROM base as run +COPY --from=build $VIRTUAL_ENV $VIRTUAL_ENV +RUN apk add --no-cache --update librrd libxslt libjpeg libressl git rrdtool \ + && rm -rf /var/cache/apk/* +RUN mkdir /code +WORKDIR /code diff --git a/frontend/.ash_history b/frontend/.ash_history new file mode 100644 index 000000000..caef8418d --- /dev/null +++ b/frontend/.ash_history @@ -0,0 +1,5 @@ +ls +yarn serve +yarn install +yarn serve +yarn serve --help diff --git a/frontend/.yarnrc b/frontend/.yarnrc new file mode 100644 index 000000000..199188096 --- /dev/null +++ b/frontend/.yarnrc @@ -0,0 +1,5 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +lastUpdateCheck 1676556135834 From 7c5b43a9907f6939038343020f21b102c2afd903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20L?= Date: Thu, 16 Feb 2023 16:12:17 +0100 Subject: [PATCH 3/4] Some cleanup + use front/api wording for containers --- .gitignore | 3 +++ docker-compose.yml | 10 +++++----- docker/{Dockerfile.admin.dev => Dockerfile.front.dev} | 1 - frontend/.ash_history | 5 ----- 4 files changed, 8 insertions(+), 11 deletions(-) rename docker/{Dockerfile.admin.dev => Dockerfile.front.dev} (78%) delete mode 100644 frontend/.ash_history diff --git a/.gitignore b/.gitignore index ab59b88fc..a75f90f78 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ test_project/modoboa.db /.project /.pydevproject + +# Misc +.ash_history diff --git a/docker-compose.yml b/docker-compose.yml index 82747a3e5..0a90263b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3' services: - web: + api: container_name: modoboa_api restart: always build: @@ -17,12 +17,12 @@ services: volumes: - .:/code - new_admin: - container_name: modoboa_new_admin + front: + container_name: modoboa_front restart: always build: context: . - dockerfile: docker/Dockerfile.admin.dev + dockerfile: docker/Dockerfile.front.dev ports: - 8080:8080 command: "" @@ -30,4 +30,4 @@ services: - ./frontend/:/home/node/ command: "yarn serve" depends_on: - - web + - api diff --git a/docker/Dockerfile.admin.dev b/docker/Dockerfile.front.dev similarity index 78% rename from docker/Dockerfile.admin.dev rename to docker/Dockerfile.front.dev index a400f3fdd..8149784bc 100644 --- a/docker/Dockerfile.admin.dev +++ b/docker/Dockerfile.front.dev @@ -2,7 +2,6 @@ FROM node:16.10-alpine ENV HOME=/home/node/ -COPY ./frontend $HOME WORKDIR $HOME RUN yarn install diff --git a/frontend/.ash_history b/frontend/.ash_history deleted file mode 100644 index caef8418d..000000000 --- a/frontend/.ash_history +++ /dev/null @@ -1,5 +0,0 @@ -ls -yarn serve -yarn install -yarn serve -yarn serve --help From c983be490adb937b1893ec1a772f5ad8bbb692e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20L?= Date: Thu, 16 Feb 2023 16:48:29 +0100 Subject: [PATCH 4/4] Fix vue config when using docker --- docker-compose.yml | 2 ++ frontend/vue.config.js | 5 ++++- test_project/test_project/settings.py | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0a90263b0..60c9a211a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,5 +29,7 @@ services: volumes: - ./frontend/:/home/node/ command: "yarn serve" + environment: + DOCKER: "yes" depends_on: - api diff --git a/frontend/vue.config.js b/frontend/vue.config.js index cd62da792..3ceebaec0 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -2,7 +2,10 @@ module.exports = { devServer: { proxy: { "/api": { - target: "http://localhost:8000/", + target: + process.env.DOCKER == "yes" + ? "http://api:8000/" + : "http://localhost:8000", }, }, }, diff --git a/test_project/test_project/settings.py b/test_project/test_project/settings.py index f0d1b63de..7a3b82a74 100644 --- a/test_project/test_project/settings.py +++ b/test_project/test_project/settings.py @@ -28,6 +28,7 @@ SECRET_KEY = '!8o(-dbbl3e+*bh7nx-^xysdt)1gso*%@4ze4-9_9o+i&t--u_' DEBUG = 'DEBUG' in os.environ ALLOWED_HOSTS = [ + 'api', '127.0.0.1', 'localhost', ]