Skip to content

Commit

Permalink
Solving problems with connectivity
Browse files Browse the repository at this point in the history
Passing the HOST IP to the different containers through a env variable.
Several changes in the docker-compose to avoid replace the wiq_0 word
Changed README to add the HOST_IP as env. variable in the AZ VM
  • Loading branch information
augustocristian committed Mar 2, 2024
1 parent f4f8efb commit bee98ce
Show file tree
Hide file tree
Showing 14 changed files with 54 additions and 25 deletions.
3 changes: 2 additions & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
teamname="wiq_0"
teamname="wiq_0"
WIQ_EXTERNAL_DNS_NAME_OR_IP=$DOCKER_HOST_IP
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ jobs:
- run: npm --prefix users/userservice test -- --coverage
- run: npm --prefix gatewayservice test -- --coverage
- run: npm --prefix webapp test -- --coverage
- name: Analyze with SonarCloud
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# - name: Analyze with SonarCloud
# uses: sonarsource/sonarcloud-github-action@master
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
12 changes: 7 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: Deploy on release
on:
release:
types: [published]
pull_request:
types: [opened, synchronize, reopened]

jobs:
unit-tests:
Expand All @@ -20,11 +22,11 @@ jobs:
- run: npm --prefix users/userservice test -- --coverage
- run: npm --prefix gatewayservice test -- --coverage
- run: npm --prefix webapp test -- --coverage
- name: Analyze with SonarCloud
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# - name: Analyze with SonarCloud
# uses: sonarsource/sonarcloud-github-action@master
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
e2e-tests:
needs: [unit-tests]
runs-on: ubuntu-latest
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,19 @@ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-
sudo chmod +x /usr/local/bin/docker-compose
```

After installing Docker, we need to set up a global environment variable to configure external container connectivity. This can be done by editing the /etc/environment file:

```bash
sudo nano /etc/environment
```

and adding the following line:

```bash
DOCKER_HOST_IP=[IP address of the remote machine]
```


### Continuous delivery (GitHub Actions)

Once we have our machine ready, we could deploy by hand the application, taking our docker-compose file and executing it in the remote machine.
Expand Down
18 changes: 10 additions & 8 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ services:

authservice:
container_name: authservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_0/authservice:latest
image: ghcr.io/arquisoft/${teamname:-wiq_0}/authservice:latest
profiles: ["dev", "prod"]
build: ./users/authservice
depends_on:
Expand All @@ -23,11 +23,11 @@ services:
networks:
- mynetwork
environment:
MONGODB_URI: mongodb://mongodb:27017/userdb
MONGODB_URI: mongodb://${WIQ_EXTERNAL_DNS_NAME_OR_IP:-mongodb}:27017/userdb

userservice:
container_name: userservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_0/userservice:latest
image: ghcr.io/arquisoft/${teamname:-wiq_0}/userservice:latest
profiles: ["dev", "prod"]
build: ./users/userservice
depends_on:
Expand All @@ -37,11 +37,11 @@ services:
networks:
- mynetwork
environment:
MONGODB_URI: mongodb://mongodb:27017/userdb
MONGODB_URI: mongodb://${WIQ_EXTERNAL_DNS_NAME_OR_IP:-mongodb}:27017/userdb

gatewayservice:
container_name: gatewayservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_0/gatewayservice:latest
image: ghcr.io/arquisoft/${teamname:-wiq_0}/gatewayservice:latest
profiles: ["dev", "prod"]
build: ./gatewayservice
depends_on:
Expand All @@ -53,18 +53,20 @@ services:
networks:
- mynetwork
environment:
AUTH_SERVICE_URL: http://authservice:8002
USER_SERVICE_URL: http://userservice:8001
AUTH_SERVICE_URL: http://${WIQ_EXTERNAL_DNS_NAME_OR_IP:-authservice}:8002
USER_SERVICE_URL: http://${WIQ_EXTERNAL_DNS_NAME_OR_IP:-userservice}:8001

webapp:
container_name: webapp-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_0/webapp:latest
image: ghcr.io/arquisoft/${teamname:-wiq_0}/webapp:latest
profiles: ["dev", "prod"]
build: ./webapp
depends_on:
- gatewayservice
ports:
- "3000:3000"
environment:
REACT_APP_API_ENDPOINT: http://${WIQ_EXTERNAL_DNS_NAME_OR_IP:-localhost}:8000

prometheus:
image: prom/prometheus
Expand Down
2 changes: 2 additions & 0 deletions gatewayservice/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
AUTH_SERVICE_URL=http://localhost:8002
USER_SERVICE_URL=http://localhost:8001
3 changes: 3 additions & 0 deletions gatewayservice/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,8 @@ RUN npm install
# Copy the app source code to the working directory
COPY . .

#Remove env file (not necesary for docker)
RUN rm -f .env

# Define the command to run your app
CMD ["node", "gateway-service.js"]
1 change: 1 addition & 0 deletions users/authservice/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MONGODB_URI=mongodb://localhost:27017/userdb
3 changes: 3 additions & 0 deletions users/authservice/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ RUN npm install
# Copy the app source code to the working directory
COPY . .

#Remove env file (not necesary for docker)
RUN rm -f .env

# Expose the port the app runs on
EXPOSE 8002

Expand Down
1 change: 1 addition & 0 deletions users/userservice/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MONGODB_URI=mongodb://localhost:27017/userdb
3 changes: 3 additions & 0 deletions users/userservice/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ RUN npm install
# Copy the app source code to the working directory
COPY . .

#Remove env file (not necesary for docker)
RUN rm -f .env

# Expose the port the app runs on
EXPOSE 8001

Expand Down
6 changes: 2 additions & 4 deletions webapp/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ FROM node:20

COPY . /app
WORKDIR /app

#Remove env file (not necesary for docker)
RUN rm -f .env
#Install the dependencies
RUN npm install

ARG API_URI="http://localhost:8000"
ENV REACT_APP_API_ENDPOINT=$API_URI

#Create an optimized version of the webapp
RUN npm run build
RUN npm install serve
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/components/AddUser.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React, { useState } from 'react';
import axios from 'axios';
import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';

const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
const apiEndpoint = process.env.REACT_APP_API_ENDPOINT;

const AddUser = () => {
const [username, setUsername] = useState('');
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/components/Login.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const Login = () => {
const [createdAt, setCreatedAt] = useState('');
const [openSnackbar, setOpenSnackbar] = useState(false);

const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
const apiEndpoint = process.env.REACT_APP_API_ENDPOINT;

const loginUser = async () => {
try {
Expand Down

0 comments on commit bee98ce

Please sign in to comment.