Made a single docker file.
This commit is contained in:
		
							parent
							
								
									7af59c54fc
								
							
						
					
					
						commit
						e8edd20bfd
					
				
							
								
								
									
										134
									
								
								docker/README.md
								
								
								
								
							
							
						
						
									
										134
									
								
								docker/README.md
								
								
								
								
							|  | @ -5,21 +5,74 @@ GitLab offers git repository management, code reviews, issue tracking, activity | |||
| 
 | ||||
| Learn more on [https://about.gitlab.com](https://about.gitlab.com) | ||||
| 
 | ||||
| Single and app and data images | ||||
| =================== | ||||
| 
 | ||||
| How to build and use images yourself | ||||
| Normally docker uses a single image for one applications. | ||||
| But GitLab stores repositories and uploads in the filesystem. | ||||
| This means that upgrades of a single image are hard. | ||||
| That is why we recommend using separate app and data images. | ||||
| We'll first describe how to use a single image. | ||||
| After that we'll describe how to use the app and data images. | ||||
| 
 | ||||
| Single image | ||||
| ================= | ||||
| 
 | ||||
| Run the below commands from the GitLab repo root directory. | ||||
| People using boot2docker should run the commands without sudo. | ||||
| 
 | ||||
| Build the image with: | ||||
| 
 | ||||
| ``` | ||||
| sudo docker build --tag gitlab-ce docker/single/ | ||||
| ``` | ||||
| 
 | ||||
| Run the image with: | ||||
| 
 | ||||
| ``` | ||||
| sudo docker run --detach --name gitlab-ce --publish 8080:80 --publish 2222:22 gitlab-ce | ||||
| ``` | ||||
| 
 | ||||
| You can then go to [http://localhost:8080/](http://localhost:8080/) or [http://192.168.59.103:8080/](http://192.168.59.103:8080/) if you use boot2docker. | ||||
| 
 | ||||
| You can login with username `root` and password `5iveL!fe`. | ||||
| Next time, you can just use `sudo docker start gitlab-ce` and `sudo docker stop gitlab-ce`. | ||||
| 
 | ||||
| Publish the image with: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab-ce sytse/gitlab-ce:7.10.1 | ||||
| sudo docker push sytse/gitlab-ce:7.10.1 | ||||
| ``` | ||||
| 
 | ||||
| Use the published image with: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker pull sytse/gitlab-ce:7.10.1 | ||||
| sudo docker run --detach --name gitlab-ce --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1 | ||||
| ``` | ||||
| 
 | ||||
| Troubleshoot with: | ||||
| 
 | ||||
| ``` | ||||
| sudo docker run -ti -e TERM=linux --name gitlab-ce --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1 bash | ||||
| /opt/gitlab/embedded/bin/runsvdir-start & gitlab-ctl reconfigure | ||||
| gitlab-ctl start | ||||
| ``` | ||||
| 
 | ||||
| Build and use app and data images | ||||
| ====================== | ||||
| 
 | ||||
| At this moment GitLab doesn't have official Docker images. | ||||
| There are unofficial images at the bottom of this document. | ||||
| But in this section we'll build our own. | ||||
| For convinience we will use suffix _xy where xy is current version of GitLab. | ||||
| Build your own based on the Omnibus packages with the following commands. | ||||
| Run these from the GitLab repo root directory. | ||||
| People using boot2docker should run it without sudo. | ||||
| For convinience we will use suffix _xy where xy is current version of GitLab. | ||||
| Run the below commands from the GitLab repo root directory. | ||||
| People using boot2docker should run the commands without sudo. | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker build --tag gitlab_data_image docker/data/ | ||||
| sudo docker build --tag gitlab_app_image_xy docker/ | ||||
| sudo docker build --tag gitlab-data docker/data/ | ||||
| sudo docker build --tag gitlab-app:7.10.1 docker/app/ | ||||
| ``` | ||||
| 
 | ||||
| We assume using a data volume container, this will simplify migrations and backups. | ||||
|  | @ -34,13 +87,13 @@ The directories on data container are: | |||
| Create the data container with: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker run --name gitlab_data gitlab_data_image /bin/true | ||||
| sudo docker run --name gitlab-data gitlab-data /bin/true | ||||
| ``` | ||||
| 
 | ||||
| After creating data container run GitLab container: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker run --detach --name gitlab_app_xy --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_xy | ||||
| sudo docker run --detach --name gitlab-app::7.10.1 --publish 8080:80 --publish 2222:22 --volumes-from gitlab-data gitlab-app:7.10.1 | ||||
| ``` | ||||
| 
 | ||||
| It might take a while before the docker container is responding to queries. You can follow the configuration process with `sudo docker logs -f gitlab_app_xy`. | ||||
|  | @ -50,7 +103,7 @@ You can then go to [http://localhost:8080/](http://localhost:8080/) or [http://1 | |||
| You can login with username `root` and password `5iveL!fe`. | ||||
| Next time, you can just use `sudo docker start gitlab_app` and `sudo docker stop gitlab_app`. | ||||
| 
 | ||||
| How to configure GitLab | ||||
| Configure GitLab | ||||
| ======================== | ||||
| 
 | ||||
| This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file `/etc/gitlab/gitlab.rb`. | ||||
|  | @ -58,7 +111,7 @@ This container uses the official Omnibus GitLab distribution, so all configurati | |||
| To access GitLab configuration, you can start an interactive command line in a new container using the shared data volume container, you will be able to browse the 3 directories and use your favorite text editor: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab_data ubuntu | ||||
| sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab-data ubuntu | ||||
| vi /etc/gitlab/gitlab.rb | ||||
| ``` | ||||
| 
 | ||||
|  | @ -66,7 +119,7 @@ vi /etc/gitlab/gitlab.rb | |||
| 
 | ||||
| You can find all available options in [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration). | ||||
| 
 | ||||
| How to upgrade GitLab | ||||
| Upgrade GitLab with app and data images | ||||
| ======================== | ||||
| 
 | ||||
| To updgrade GitLab to new versions, stop running container, create new docker image and container from that image. | ||||
|  | @ -74,41 +127,40 @@ To updgrade GitLab to new versions, stop running container, create new docker im | |||
| It Assumes that you're upgrading from 7.8 to 7.9 and you're in the updated GitLab repo root directory: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker stop gitlab_app_78 | ||||
| sudo docker build --tag gitlab_app_image_79 docker/ | ||||
| sudo docker run --detach --name gitlab_app_79 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_79 | ||||
| sudo docker stop gitlab-app | ||||
| sudo docker rm gitlab-app | ||||
| sudo docker build --tag gitlab-app:7.10.1 docker/app/ | ||||
| sudo docker run --detach --name gitlab-app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab-app:7.10.1 | ||||
| ``` | ||||
| 
 | ||||
| On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup old container and image: | ||||
| On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup  image: | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker rm gitlab_app_78 | ||||
| sudo docker rmi gitlab_app_image_78 | ||||
| sudo docker rmi gitlab-app:7.8.1 | ||||
| ``` | ||||
| 
 | ||||
| Publish app and data images to Dockerhub | ||||
| ========================= | ||||
| Login to Dockerhub with `sudo docker login` and run the following (replace '7.9.2' with the version you're using and 'Sytse Sijbrandij' with your name): | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab-app:7.10.1 sytse/gitlab-app:7.10.1 | ||||
| sudo docker push sytse/gitlab-app:7.10.1 | ||||
| sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_data sytse/gitlab_data | ||||
| sudo docker push sytse/gitlab_data | ||||
| ``` | ||||
| 
 | ||||
| Use app and data images published to Dockerhub | ||||
| ================================ | ||||
| This examples uses the unofficial images made by GitLab CEO Sytse. | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker pull sytse/gitlab-data | ||||
| sudo docker pull sytse/gitlab-app:7.10.1 | ||||
| sudo docker run --name gitlab-data sytse/gitlab-data /bin/true | ||||
| sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data sytse/gitlab-app:7.10.1 | ||||
| ``` | ||||
| 
 | ||||
| Troubleshooting | ||||
| ========================= | ||||
| Please see the [troubleshooting](troubleshooting.md) file in this directory. | ||||
| 
 | ||||
| 
 | ||||
| Publish the images to Dockerhub | ||||
| ========================= | ||||
| Login to Dockerhub with `sudo docker login` and run the following (replace '7.9.2' with the version you're using and 'Sytse Sijbrandij' with your name): | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_app_xy sytse/gitlab-ce:7.9.2 | ||||
| sudo docker push sytse/gitlab-ce:7.9.2 | ||||
| sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_data sytse/gitlab_data | ||||
| sudo docker push sytse/gitlab_data | ||||
| ``` | ||||
| 
 | ||||
| Use images published to Dockerhub | ||||
| ================================ | ||||
| This examples uses the unofficial images made by GitLab CEO Sytse. | ||||
| 
 | ||||
| ```bash | ||||
| sudo docker pull sytse/gitlab_data | ||||
| sudo docker pull sytse/gitlab-ce:7.9.2 | ||||
| sudo docker run --name gitlab_data_volume sytse/gitlab_data /bin/true | ||||
| sudo docker run --detach --name gitlab_app_7_9_2 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data_volume sytse/gitlab-ce:7.9.2 | ||||
| ``` | ||||
|  |  | |||
|  | @ -0,0 +1,35 @@ | |||
| FROM ubuntu:14.04 | ||||
| MAINTAINER Sytse Sijbrandij | ||||
| 
 | ||||
| # Install required packages | ||||
| RUN apt-get update | ||||
| ENV DEBIAN_FRONTEND noninteractive | ||||
| RUN apt-get install -yq --no-install-recommends \ | ||||
|       ca-certificates \ | ||||
|       openssh-server \ | ||||
|       wget | ||||
| 
 | ||||
| # Download & Install GitLab | ||||
| # If the Omnibus package version below is outdated please contribute a merge request to update it. | ||||
| # If you run GitLab Enterprise Edition point it to a location where you have downloaded it. | ||||
| RUN TMP_FILE=$(mktemp); \ | ||||
|     wget -q -O $TMP_FILE https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab-ce_7.10.1~omnibus.2-1_amd64.deb \ | ||||
|     && dpkg -i $TMP_FILE \ | ||||
|     && rm -f $TMP_FILE | ||||
| 
 | ||||
| # Manage SSHD through runit | ||||
| RUN mkdir -p /opt/gitlab/sv/sshd/supervise \ | ||||
|     && mkfifo /opt/gitlab/sv/sshd/supervise/ok \ | ||||
|     && printf "#!/bin/sh\nexec 2>&1\numask 077\nexec /usr/sbin/sshd -D" > /opt/gitlab/sv/sshd/run \ | ||||
|     && chmod a+x /opt/gitlab/sv/sshd/run \ | ||||
|     && ln -s /opt/gitlab/sv/sshd /opt/gitlab/service \ | ||||
|     && mkdir -p /var/run/sshd | ||||
| 
 | ||||
| # Expose web & ssh | ||||
| EXPOSE 80 22 | ||||
| 
 | ||||
| # Copy assets | ||||
| COPY assets/wrapper /usr/local/bin/ | ||||
| 
 | ||||
| # Wrapper to handle signal, trigger runit and reconfigure GitLab | ||||
| CMD ["/usr/local/bin/wrapper"] | ||||
|  | @ -0,0 +1,16 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| function sigterm_handler() { | ||||
|     echo "SIGTERM signal received, try to gracefully shutdown all services..." | ||||
|     gitlab-ctl stop | ||||
| } | ||||
| 
 | ||||
| trap "sigterm_handler; exit" TERM | ||||
| 
 | ||||
| function entrypoint() { | ||||
|     /opt/gitlab/embedded/bin/runsvdir-start & | ||||
|     gitlab-ctl reconfigure # will also start everything | ||||
|     gitlab-ctl tail # tail all logs | ||||
| } | ||||
| 
 | ||||
| entrypoint | ||||
|  | @ -0,0 +1,31 @@ | |||
| { | ||||
|   "id": "/gitlab", | ||||
|   "ports": [0,0], | ||||
|   "cpus": 2, | ||||
|   "mem": 2048.0, | ||||
|   "disk": 10240.0, | ||||
|   "container": { | ||||
|     "type": "DOCKER", | ||||
|     "docker": { | ||||
|       "network": "HOST", | ||||
|       "image": "sytse/gitlab-ce:7.10.1" | ||||
|     }, | ||||
|     "volumes": [ | ||||
|       { | ||||
|         "containerPath": "/var/opt/gitlab", | ||||
|         "hostPath": "/var/opt/gitlab", | ||||
|         "mode": "RW" | ||||
|       }, | ||||
|       { | ||||
|         "containerPath": "/var/log/gitlab", | ||||
|         "hostPath": "/var/log/gitlab", | ||||
|         "mode": "RW" | ||||
|       }, | ||||
|       { | ||||
|         "containerPath": "/var/opt/gitlab", | ||||
|         "hostPath": "/var/opt/gitlab", | ||||
|         "mode": "RW" | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
|  | @ -61,3 +61,11 @@ head /proc/sys/kernel/shmmax /proc/sys/kernel/shmall | |||
| free -m | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| Remove ALL docker containers and images (also non GitLab ones): | ||||
| 
 | ||||
| ``` | ||||
| docker rm $(docker ps -a -q) | ||||
| docker rmi $(docker images -q) | ||||
| ``` | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue