diff --git a/.travis.yml b/.travis.yml index c266b5f0a..a6e451023 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,9 @@ before_install: - cp cypress.env.template.json cypress.env.json install: - - docker-compose -f docker-compose.yml -f docker-compose.travis.yml up --build -d - # avoid "Database constraints have changed after this transaction started" + - docker-compose -f docker-compose.yml build --parallel + - docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml build # just tagging, just be quite fast + - docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml up -d - wait-on http://localhost:7474 - docker-compose exec neo4j db_setup @@ -38,6 +39,9 @@ script: - docker-compose exec webapp yarn run test --ci --verbose=false --coverage - docker-compose exec -d backend yarn run test:before:seeder # Fullstack + - docker-compose down + - docker-compose -f docker-compose.yml up -d + - wait-on http://localhost:7474 - yarn run cypress:run # Coverage - yarn run codecov diff --git a/backend/Dockerfile b/backend/Dockerfile index 75f5a762f..fcc663cda 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -14,7 +14,7 @@ COPY package.json yarn.lock ./ COPY .env.template .env CMD ["yarn", "run", "start"] -FROM base as builder +FROM base as build-and-test RUN yarn install --production=false --frozen-lockfile --non-interactive COPY . . RUN cp .env.template .env @@ -23,6 +23,6 @@ RUN NODE_ENV=production yarn run build # reduce image size with a multistage build FROM base as production ENV NODE_ENV=production -COPY --from=builder /nitro-backend/dist ./dist +COPY --from=build-and-test /nitro-backend/dist ./dist COPY ./public/img/ ./public/img/ -RUN yarn install --frozen-lockfile --non-interactive +RUN yarn install --production=true --frozen-lockfile --non-interactive diff --git a/docker-compose.build-and-test.yml b/docker-compose.build-and-test.yml new file mode 100644 index 000000000..e8e79644f --- /dev/null +++ b/docker-compose.build-and-test.yml @@ -0,0 +1,13 @@ +version: "3.4" + +services: + webapp: + image: humanconnection/nitro-web:build-and-test + build: + context: webapp + target: build-and-test + backend: + image: humanconnection/nitro-backend:build-and-test + build: + context: backend + target: build-and-test diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 5ef013656..d5b17fe67 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -13,57 +13,19 @@ services: target: build-and-test volumes: - ./webapp:/nitro-web - - webapp_node_modules:/nitro-web/node_modules command: yarn run dev - environment: - - NUXT_BUILD=.nuxt-dist # avoid file ownership issues with shared folders - factories: - image: humanconnection/nitro-backend:builder - build: - context: backend - target: builder - ports: - - 4001:4001 - networks: - - hc-network - volumes: - - ./backend:/nitro-backend - - factories_node_modules:/nitro-backend/node_modules - - uploads:/nitro-backend/public/uploads - depends_on: - - neo4j - environment: - - NEO4J_URI=bolt://neo4j:7687 - - GRAPHQL_PORT=4000 - - GRAPHQL_URI=http://localhost:4000 - - CLIENT_URI=http://localhost:3000 - - JWT_SECRET=b/&&7b78BF&fv/Vd - - MAPBOX_TOKEN=pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ - - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 - command: yarn run test:before:seeder backend: - image: humanconnection/nitro-backend:builder build: context: backend - target: builder + target: build-and-test volumes: - ./backend:/nitro-backend - - backend_node_modules:/nitro-backend/node_modules - - uploads:/nitro-backend/public/uploads command: yarn run dev environment: - SMTP_HOST=mailserver - SMTP_PORT=25 - SMTP_IGNORE_TLS=true - "DEBUG=${DEBUG}" - neo4j: - environment: - - NEO4J_AUTH=none - ports: - - 7687:7687 - - 7474:7474 - volumes: - - neo4j-data:/data maintenance: image: humanconnection/maintenance:latest build: @@ -74,9 +36,5 @@ services: ports: - 3503:80 -volumes: - webapp_node_modules: - backend_node_modules: - factories_node_modules: - neo4j-data: - uploads: +networks: + hc-network: diff --git a/docker-compose.travis.yml b/docker-compose.travis.yml deleted file mode 100644 index 4a1acb96a..000000000 --- a/docker-compose.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3.4" - -services: - neo4j: - environment: - - NEO4J_AUTH=none - ports: - - 7687:7687 - - 7474:7474 - webapp: - build: - context: webapp - target: build-and-test - volumes: - #/nitro-web - - ./webapp/coverage:/nitro-web/coverage - backend: - image: humanconnection/nitro-backend:builder - build: - context: backend - target: builder - volumes: - - ./backend/coverage:/nitro-backend/coverage - ports: - - 4001:4001 - - 4123:4123 - diff --git a/docker-compose.yml b/docker-compose.yml index e782adcfa..343be7810 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,9 @@ services: - 3000:3000 networks: - hc-network + volumes: + - webapp_node_modules:/nitro-web/node_modules + - webapp_nuxt_folder:/nitro-web/.nuxt environment: - HOST=0.0.0.0 - GRAPHQL_URI=http://backend:4000 @@ -25,6 +28,9 @@ services: - neo4j ports: - 4000:4000 + volumes: + - backend_node_modules:/nitro-backend/node_modules + - uploads:/nitro-backend/public/uploads environment: - NEO4J_URI=bolt://neo4j:7687 - GRAPHQL_PORT=4000 @@ -39,6 +45,19 @@ services: context: neo4j networks: - hc-network + environment: + - NEO4J_AUTH=none + ports: + - 7687:7687 + - 7474:7474 + volumes: + - neo4j_data:/data networks: hc-network: +volumes: + webapp_node_modules: + webapp_nuxt_folder: + backend_node_modules: + neo4j_data: + uploads: diff --git a/webapp/Dockerfile b/webapp/Dockerfile index 2fb807501..3d0c085b8 100644 --- a/webapp/Dockerfile +++ b/webapp/Dockerfile @@ -14,14 +14,14 @@ WORKDIR $WORKDIR # See: https://github.com/nodejs/docker-node/pull/367#issuecomment-430807898 RUN apk --no-cache add git -COPY . . FROM base as build-and-test +COPY . . RUN cp .env.template .env RUN yarn install --production=false --frozen-lockfile --non-interactive RUN NODE_ENV=production yarn run build FROM base as production -ENV NODE_ENV=production -COPY --from=build-and-test ./nitro-web/node_modules ./node_modules +COPY package.json yarn.lock ./ +RUN yarn install --production=true --frozen-lockfile --non-interactive COPY --from=build-and-test ./nitro-web/.nuxt ./.nuxt