A sample node.js application for the demo:
Other than the Dockerfile, the most important thing is the ssh folder with the keys. You need to generate an ssh key (`ssh-keygen`) and add the key to GitLab, so you can use it to access your repository.
FROM ubuntu:latest WORKDIR /app RUN apt-get update && \ apt-get install -y git # Authorize SSH Host RUN mkdir -p /root/.ssh && \ chmod 0700 /root/.ssh && \ ssh-keyscan gitlab.com > /root/.ssh/known_hosts # Add the keys and set permissions COPY ./ssh/id_rsa /root/.ssh/id_rsa RUN chmod 600 /root/.ssh/id_rsa RUN git clone [email protected]:marcellsimon/docker-git-example.git WORKDIR /app/docker-git-example RUN npm i
You need to enable gitlab.com so it can use it for ssh, and won't prompt a message in CLI. Then add the keys to your docker container, and change the permissions (otherwise it'd throw an error). Then `RUN git clone` will pull the project.
Then you can add any commands you'd like to. You will always have the latest version of your repository in the built image. You can also add the branch name to it, so it'll always pull `main` or a specific branch.
Photo by Anete Lusina