Alexander Chichigin
Posted on April 20, 2021
The problem is rather contrived so the solution is rarely needed. But if you'll ever find yourself in this situation apparently it's easy to get out. đ
Suppose you want to run the same docker-compose
with the same Dockerfile
but from several subfolders and you don't like duplication. So you fave a folder structure like this:
project
|- subproject1
|- the_file.txt
|- subproject2
|- the_file.txt
|- Dockerfile
|- compose.yml
Now you'd like to run docker-compose -f ../compose.yml up
from each of subproject1
and subproject2
and for docker-compose
to set the context for the Dockerfile
to each of the folders respectively.
You do it with $PWD
as follows:
version: "3.9"
services:
assignment:
build:
context: $PWD
dockerfile: ../Dockerfile
ports:
- "8080:8080"
depends_on:
- "database"
database:
image: "mariadb:10.5"
restart: "always"
environment:
MYSQL_ROOT_PASSWORD: "secret_pass"
in the compose.yml
file. For the sake of argument we pretend we need a separate service with a database in each case.
Then you write your Dockerfile
as usual:
FROM node:15
# Create app directory
WORKDIR /app
RUN npm install -g http-server
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "http-server", "-p", "8080" ]
And now for the subproject1
you should have the first text file exposed over the Web interface, and for the subproject2
the second text file.
Yep, as I told you from the start this is rarely needed because you rarely have two (or more) subprojects built with exactly the same Dockerfile
. In the end it turned out I myself don't need this setup. But I spent surprisingly long time figuring (Googling) out the right config, so we all have it now laid out in the case we ever need it. đ
Posted on April 20, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 28, 2024
November 28, 2024