Proper docker container generated

This commit is contained in:
Justin 2018-05-16 23:16:35 -04:00
parent 7a5e8de45c
commit 8f18780c86
12 changed files with 130 additions and 36 deletions

View File

@ -1,7 +0,0 @@
FROM gitlab/gitlab-ce:latest
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
CMD ["/usr/local/bin/docker-entrypoint.sh"]

View File

@ -1,27 +0,0 @@
#!/bin/sh
#https://gitlab.com/gitlab-org/omnibus-gitlab/blob/10-8-stable/docker/assets/wrapper
exec /assets/wrapper
gitlab-ctl stop
gitlab-rails console
# ## Reset default password for root user
# u = User.first
# u.password_automatically_set = false
# u.password = 'password'
# u.password_confirmation = 'password'
# u.save!
# ## Create access token
# t = PersonalAccessToken.new({ user: u, name: 'node-gitlab', scopes: ['api']})
# t.save!
# ## Store access token in an ENV
# ENV['PERSONAL_ACCESS_TOKEN'] = t.token
# ## Exist rails console
exit
## Exec any other entry point logic

View File

@ -3,7 +3,7 @@ services:
gitlab:
image: gitlab/gitlab-ce
container_name: gitlab
command: sh -c ./docker-entrypoint.sh
entrypoint: init/docker-entrypoint
environment:
- GITLAB_URL='http://localhost:8080'
- PERSONAL_ACCESS_TOKEN='token'
@ -11,4 +11,6 @@ services:
- 8080:80
- 8443:443
volumes:
- ./docker-entrypoint.sh:/docker-entrypoint.sh
- ./docker-entrypoint:/init/docker-entrypoint
- ./init:/init/init
- ./test.rb:/init/test.rb

14
test/docker-entrypoint Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
## Running the init logic for gitlab. See PR# for splitting this wrapper file into two pieces
/bin/bash init/init
echo Sleep for 30 seconds to ensure all services are running
sleep 30
echo Initalize test token and user
PERSONAL_ACCESS_TOKEN="$(gitlab-rails r /init/test.rb)"
echo Tail and wait
gitlab-ctl tail&
wait

101
test/init Normal file
View File

@ -0,0 +1,101 @@
#!/bin/bash
set -e
function sigterm_handler() {
echo "SIGTERM signal received, try to gracefully shutdown all services..."
gitlab-ctl stop
}
function failed_pg_upgrade() {
echo 'Upgrading the existing database to 9.6 failed and was reverted.'
echo 'Please check the output, and open an issue at:'
echo 'https://gitlab.com/gitlab-org/omnibus-gitlab/issues'
echo 'If you would like to restart the instance without attempting to'
echo 'upgrade, add the following to your docker command:'
echo '-e GITLAB_SKIP_PG_UPGRADE=true'
exit 1
}
trap "sigterm_handler; exit" TERM
source /RELEASE
echo "Thank you for using GitLab Docker Image!"
echo "Current version: $RELEASE_PACKAGE=$RELEASE_VERSION"
echo ""
if [[ "$PACKAGECLOUD_REPO" == "unstable" ]]; then
echo "You are using UNSTABLE version of $RELEASE_PACKAGE!"
echo ""
fi
echo "Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file"
echo "And restart this container to reload settings."
echo "To do it use docker exec:"
echo
echo " docker exec -it gitlab vim /etc/gitlab/gitlab.rb"
echo " docker restart gitlab"
echo
echo "For a comprehensive list of configuration options please see the Omnibus GitLab readme"
echo "https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md"
echo
echo "If this container fails to start due to permission problems try to fix it by executing:"
echo
echo " docker exec -it gitlab update-permissions"
echo " docker restart gitlab"
echo
sleep 3s
# Copy gitlab.rb for the first time
if [[ ! -e /etc/gitlab/gitlab.rb ]]; then
echo "Installing gitlab.rb config..."
cp /opt/gitlab/etc/gitlab.rb.template /etc/gitlab/gitlab.rb
chmod 0600 /etc/gitlab/gitlab.rb
fi
# Generate ssh host key for the first time
if [[ ! -f /etc/gitlab/ssh_host_rsa_key ]]; then
echo "Generating ssh_host_rsa_key..."
ssh-keygen -f /etc/gitlab/ssh_host_rsa_key -N '' -t rsa
chmod 0600 /etc/gitlab/ssh_host_rsa_key
fi
if [[ ! -f /etc/gitlab/ssh_host_ecdsa_key ]]; then
echo "Generating ssh_host_ecdsa_key..."
ssh-keygen -f /etc/gitlab/ssh_host_ecdsa_key -N '' -t ecdsa
chmod 0600 /etc/gitlab/ssh_host_ecdsa_key
fi
if [[ ! -f /etc/gitlab/ssh_host_ed25519_key ]]; then
echo "Generating ssh_host_ed25519_key..."
ssh-keygen -f /etc/gitlab/ssh_host_ed25519_key -N '' -t ed25519
chmod 0600 /etc/gitlab/ssh_host_ed25519_key
fi
# Remove all services, the reconfigure will create them
echo "Preparing services..."
rm -f /opt/gitlab/service/*
ln -s /opt/gitlab/sv/sshd /opt/gitlab/service
ln -sf /opt/gitlab/embedded/bin/sv /opt/gitlab/init/sshd
mkdir -p /var/log/gitlab/sshd
# Start service manager
echo "Starting services..."
GITLAB_OMNIBUS_CONFIG= /opt/gitlab/embedded/bin/runsvdir-start &
# Configure gitlab package
# WARNING:
# the preinst script has the database backup
# It will not be executed, because all services are not yet started
# They will be started when `reconfigure` is executed
echo "Configuring GitLab package..."
/var/lib/dpkg/info/${RELEASE_PACKAGE}.preinst upgrade
echo "Configuring GitLab..."
gitlab-ctl reconfigure
# Make sure PostgreSQL is at the latest version.
# If it fails, print a message with a workaround and exit
if [ "${GITLAB_SKIP_PG_UPGRADE}" != true ]; then
gitlab-ctl pg-upgrade -w || failed_pg_upgrade
fi
if [ -n "${GITLAB_POST_RECONFIGURE_SCRIPT+x}" ]; then
echo "Runnning Post Reconfigure Script..."
eval "${GITLAB_POST_RECONFIGURE_SCRIPT}"
fi

11
test/test.rb Normal file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env ruby
u = User.first
u.password_automatically_set = false
u.password = 'password'
u.password_confirmation = 'password'
u.save!
t = PersonalAccessToken.new({ user: u, name: 'node-gitlab', scopes: ['api']})
t.save!
puts t.token