Below you can see a representation of my project folder structure. I have two microservices which are called auth
and profile
, they are located inside the services
directory. The docker-containers
directory hold my docker-compose.yaml
file in which I list all the images of my application.
.
├── services
│ ├── auth
│ │ ├── src
│ │ ├── dist
│ │ ├── .env
│ │ ├── package.json
│ │ ├── Dockerfile
│ │ ├── .dockerignore
│ ├── profile
│ │ ├── src
│ │ ├── dist
│ │ ├── .env
│ │ ├── package.json
│ │ ├── Dockerfile
│ │ ├── .dockerignore
└── docker-containers
├── docker-compose.yaml
Below is my docker-compose.yaml
file in which I define the location of the auth
service (and other images). I also want to override the local .env
file with the values from the environment
list. But when I run the docker compose project the values from my local .env
file are still being used.
version: "3.8"
services:
auth:
build:
context: ../services/auth
container_name: auth-service
depends_on:
- redis
- mongo
ports:
- 3000:3000
volumes:
- ../services/auth/:/app
- /app/node_modules
command: yarn dev
env_file: ../services/auth/.env
environment:
FASTIFY_PORT: 3000
REDIS_HOST: redis
FASTIFY_ADDRESS: "0.0.0.0"
TOKEN_SECRET: 1d037ffb614158a9032c02f479b36f42dd33ba325f76a7692498c33839afc5d547eae2b47f0f4926b76b08fc91d19352
MONGO_URL: mongodb://root:example@mongo:27017
mongo:
image: mongo
container_name: mongo
restart: on-failure
ports:
- 2717:27017
volumes:
- ./mongo-data:/data
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
redis:
image: redis
container_name: redis
volumes:
- ./redis-data:/data
ports:
- 6379:6379
This is my Dockerfile
and the .dockerignore
file inside the auth
service and based on my understanding the local .env
file should not be copied to the docker context, because it is listed inside the .dockerignore
file.
But when I log a value from my environment variables from the docker application it still logs the old value from my local .env
file.
FROM node:16-alpine
WORKDIR /app
COPY ["package.json", "yarn.lock", "./"]
RUN yarn
COPY dist .
EXPOSE 3000
CMD [ "yarn", "start" ]
node_modules
Dockerfile
.env*
.prettier*
.git
.vscode/
The weird part is that the node_modules
folder of the auth
services is being ignored but for some reason the environment variables inside the docker container are still based on the local .env
file.