I tried to install Gearman on my Ubuntu 18.04 Docker container and encountered a lot of issues.
This write-up is to save you some valuable time of your life.
TL;DR
apt update
apt install -y g++ uuid-dev gperf libboost-all-dev libevent-dev curl
cd /tmp
curl -LO https://github.com/gearman/gearmand/releases/download/1.1.18/gearmand-1.1.18.tar.gz
tar xvzf gearmand-1.1.18.tar.gz
cd gearmand-1.1.18
./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu
make
make test
make install
# Start gearman in the background
gearmand --log-file /var/log/gearmand.log --daemon
To get there, I encountered the following issues:
./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu
...
checking test for a working libevent... no
configure: error: Unable to find libevent
Fix: apt install -y libevent-dev
./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu
...
checking whether the Boost::Program_Options library is available... yes
configure: error: Could not find a version of the library!
Fix: apt install -y libboost-all-dev
Installing the PHP client libraries for Gearman
If you intend to use PHP to talk to your Gearman service, use the following to get the libraries installed.
Note: you might not need the last line. This is to enable the Gearman PHP extension in Docker.
cd /tmp \
&& wget https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.6.tar.gz\
&& tar xvzf gearman-2.0.6.tar.gz \
&& mv pecl-gearman-gearman-2.0.6 pecl-gearman \
&& cd pecl-gearman \
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
&& cd / \
&& rm /tmp/gearman-2.0.6.tar.gz \
&& rm -r /tmp/pecl-gearman \
&& docker-php-ext-enable gearman
Create your docker-compose
file.
Ensure it’s stating a version of at least 3. Continue reading
Want to run a CLI command on Docker while debugging it with XDebug in an IDE like PHPStorm?
Then you need to have your environment in order.
First, create the path mappings in PHPStorm by creating a server in Settings / Preferences | Languages & Frameworks | PHP | Servers.
Continue readingI wanted a quick setup for an Elasticsearch Logstach and Kibana (ELK-)stack to work with. But searching on the internet gave me too many long-winded not really working examples.
That’s why I created this page. Use it to quickly get up-and-running with an ELK-stack of your own.
Create the file docker-compose.yml
# file: docker-compose.yml version: "3" services: elk: image: sebp/elk ports: - "5601:5601" - "9200:9200" - "5044:5044" environment: - MAX_MAP_COUNT=262145 - ELASTICSEARCH_START=1 - LOGSTASH_START=1 - KIBANA_START=1 - TZ="Europe/Amsterdam" volumes: - elk-data:/var/lib/elasticsearch volumes: elk-data:
Now start up with docker-compose up -d
. That’s it!
5601: endpoint for Kibana
9200: endpoint for elastic search
Don’t leave your elastic-search open for everyone.
Add some basic security by adding a .htpasswd
config to your webserver.
$ sudo sh -c "echo -n 'myelasticuser:' >> /etc/nginx/.htpasswd" $ sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd" Password: Verifying - Password:
Add it to your webserver, like nginx.
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; } }
Reload nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful $ sudo service nginx reload
I chose the Docker image of sebp because he’s got great documentation. Go check it out!
Especially the part with the Frequently Encountered Issues.
There, you’ll see that you’ll:
max map count
:sudo sysctl -w vm.max_map_count=262144[updated 2022-08-08]
Struggling to get a working environment with SonarQube and PostgreSQL?
Use the following docker-compose file and be up and running in minutes.
It is as ‘bare’ as possible:
Recommended system specs
# file: docker-compose.yml
version: "3"
services:
sonarqube:
image: sonarqube:9-community
# platform: linux/amd64 # uncomment this when using Mac M1
restart: unless-stopped
environment:
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=v07IGCFCF83Z95NX
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
ports:
- "9000:9000"
- "9092:9092"
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres:14.4
# platform: linux/amd64 # uncomment this when using Mac M1
restart: unless-stopped
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=v07IGCFCF83Z95NX
- POSTGRES_DB=sonarqube
volumes:
- sonarqube_db:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- postgresql_data:/var/lib/postgresql/data
volumes:
postgresql_data:
sonarqube_bundled-plugins:
sonarqube_conf:
sonarqube_data:
sonarqube_db:
sonarqube_extensions:
Start this stack with the following command:
# start the containers
docker-compose up -d
You can reach your SonarQube instance at http://localhost:9000
Use the default credentials admin/admin to login.
Useful links: