mirror of
https://github.com/sameersbn/docker-gitlab.git
synced 2026-01-18 13:58:25 +00:00
162 lines
4.6 KiB
Bash
Executable File
162 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
GITLAB_VERSION=6.7.2
|
|
SHELL_VERSION=1.9.1
|
|
|
|
# add git user
|
|
adduser --disabled-login --gecos 'GitLab' git
|
|
|
|
sudo -u git -H mkdir -p /home/git/data/.ssh
|
|
sudo -u git -H ln -s /home/git/data/.ssh /home/git/.ssh
|
|
|
|
# create the data store
|
|
sudo -u git -H mkdir -p /home/git/data
|
|
|
|
# install gitlab-shell
|
|
sudo -u git -H mkdir -p /home/git/gitlab-shell
|
|
wget "https://github.com/gitlabhq/gitlab-shell/archive/v${SHELL_VERSION}.tar.gz" -O - | tar -zvxf - --strip=1 -C /home/git/gitlab-shell/
|
|
chown -R git:git /home/git/gitlab-shell/
|
|
|
|
cd /home/git/gitlab-shell
|
|
sudo -u git -H cp -a /app/setup/config/gitlab-shell/config.yml config.yml
|
|
sudo -u git -H ./bin/install
|
|
|
|
# install gitlab
|
|
sudo -u git -H mkdir -p /home/git/gitlab
|
|
wget "https://github.com/gitlabhq/gitlabhq/archive/v${GITLAB_VERSION}.tar.gz" -O - | tar -zvxf - --strip=1 -C /home/git/gitlab/
|
|
chown -R git:git /home/git/gitlab/
|
|
|
|
cd /home/git/gitlab
|
|
|
|
# copy default configurations
|
|
cp /app/setup/config/nginx/gitlab /etc/nginx/sites-available/gitlab
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/gitlab.yml config/gitlab.yml
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/resque.yml config/resque.yml
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/database.yml config/database.yml
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/sidekiq.yml config/sidekiq.yml
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/unicorn.rb config/unicorn.rb
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/rack_attack.rb config/initializers/rack_attack.rb
|
|
sudo -u git -H cp /app/setup/config/gitlabhq/smtp_settings.rb config/initializers/smtp_settings.rb
|
|
|
|
# create required tmp and log directories
|
|
sudo -u git -H mkdir -p tmp/pids/ tmp/sockets/
|
|
chmod -R u+rwX log tmp
|
|
|
|
# create symlink to uploads directory
|
|
sudo -u git -H ln -s /home/git/data/uploads public/uploads
|
|
|
|
# create symlink to backups directory
|
|
sudo -u git -H ln -s /home/git/data/backups tmp/backups
|
|
|
|
# create production log
|
|
sudo -u git -H touch log/production.log
|
|
|
|
# install gems required by gitlab
|
|
if [ -d "/app/setup/cache" ]; then
|
|
# offline gem installation
|
|
mv /app/setup/cache vendor/
|
|
chown -R git:git vendor/cache
|
|
sudo -u git -H bundle install --local --deployment --without development test aws
|
|
else
|
|
# online gem installation
|
|
sudo -u git -H bundle install --deployment --without development test aws
|
|
fi
|
|
|
|
# make sure everything in /home/git is owned by the git user
|
|
chown -R git:git /home/git/
|
|
|
|
# install gitlab bootscript
|
|
cp lib/support/init.d/gitlab /etc/init.d/gitlab
|
|
chmod +x /etc/init.d/gitlab
|
|
|
|
# install logrotate configuration
|
|
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
|
|
|
|
# copy nginx configuration
|
|
ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
|
|
|
|
# create the /var/run/sshd directory (required for sshd to start)
|
|
mkdir -p /var/run/sshd
|
|
|
|
# setup log rotation for supervisord
|
|
cat > /etc/logrotate.d/supervisord <<EOF
|
|
/var/log/supervisor/*.log {
|
|
weekly
|
|
missingok
|
|
rotate 52
|
|
compress
|
|
delaycompress
|
|
notifempty
|
|
copytruncate
|
|
}
|
|
EOF
|
|
|
|
# configure supervisord to start nginx
|
|
echo "daemon off;" >> /etc/nginx/nginx.conf
|
|
cat > /etc/supervisor/conf.d/nginx.conf <<EOF
|
|
[program:nginx]
|
|
priority=20
|
|
directory=/tmp
|
|
command=/usr/sbin/nginx
|
|
user=root
|
|
autostart=false
|
|
autorestart=true
|
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
|
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
|
EOF
|
|
|
|
# configure supervisord to start openssh server
|
|
cat > /etc/supervisor/conf.d/openssh-server.conf <<EOF
|
|
[program:openssh-server]
|
|
priority=20
|
|
directory=/tmp
|
|
command=/usr/sbin/sshd -D
|
|
user=root
|
|
autostart=true
|
|
autorestart=true
|
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
|
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
|
EOF
|
|
|
|
# configure supervisord to start cron
|
|
cat > /etc/supervisor/conf.d/cron.conf <<EOF
|
|
[program:cron]
|
|
priority=20
|
|
directory=/tmp
|
|
command=/usr/sbin/cron -f
|
|
user=root
|
|
autostart=true
|
|
autorestart=true
|
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
|
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
|
EOF
|
|
|
|
# configure supervisord to start mysql (manual)
|
|
cat > /etc/supervisor/conf.d/mysqld.conf <<EOF
|
|
[program:mysqld]
|
|
priority=20
|
|
directory=/tmp
|
|
command=/usr/bin/mysqld_safe
|
|
user=root
|
|
autostart=false
|
|
autorestart=true
|
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
|
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
|
EOF
|
|
|
|
# configure supervisord to start redis (manual)
|
|
sed 's/daemonize yes/daemonize no/' -i /etc/redis/redis.conf
|
|
cat > /etc/supervisor/conf.d/redis-server.conf <<EOF
|
|
[program:redis-server]
|
|
priority=20
|
|
directory=/tmp
|
|
command=/usr/bin/redis-server /etc/redis/redis.conf
|
|
user=redis
|
|
autostart=false
|
|
autorestart=true
|
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
|
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
|
EOF
|