Redmine is a flexible and open-source project management and issue-tracking web application. It is widely used for managing projects, tracking bugs, and handling tasks and deadlines. Developed using Ruby on Rails, Redmine is highly customizable and supports a wide range of features for team collaboration and project organization.
Redmine is a popular alternative to commercial project management tools due to its flexibility, customization, and open-source nature.
In this article we will setup redmine on docker container along with database server, mysql and also nginx as reverse proxy.
Install Docker
We use ubuntu server hosted on AWS EC2 and installation guide from docker official.
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
We use the latest version of docker along with docker compose.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ok, docker installed, next we need to configure our user (ubuntu) can access docker directly without sudo.
sudo groupadd docker sudo usermod -aG docker $USER
and then logout and login again to our server. Docker is ready!
We can use this command below to start docker container when our server restart.
sudo systemctl enable docker.service sudo systemctl enable containerd.service
docker container is enough for right now.
Create docker compose file
We will create one docker compose file.
nano docker-compose.yaml
and paste this yaml code.
version: '3.1' services: nginx: # we use the latest of nginx as base image: nginx:latest restart: always # we expose port 80 and 443 to the public as our reverse proxy ports: - "80:80" - "443:443" volumes: # we link volume from host for nginx configuration - './nginx.conf:/etc/nginx/conf.d/nginx.conf' # we link volume from host for nginx certs - './certs:/etc/nginx/certs' # we link also timezone from the host - '/etc/localtime:/etc/localtime:ro' - '/etc/timezone:/etc/timezone:ro' depends_on: # we will wait until server redmine is ready - redmine redmine: # we use redmine from dockerhub as base image: redmine restart: always volumes: # we link redmine data to our local storage, so it will persistent when # the service redmine restarted - 'redmine_data:/usr/src/redmine/files' # we link redmine plugin also from the host - '/home/bkn/redmine_plugins:/usr/src/redmine/plugins' # we link also timezone from the host - '/etc/localtime:/etc/localtime:ro' - '/etc/timezone:/etc/timezone:ro' # we don't expose port on this service because nginx service will do # default port redmine expose internally is 3000 #ports: #- 3000:3000 #- 444:3000 environment: # we create some env for redmine REDMINE_DB_MYSQL: db REDMINE_DB_PORT: 3306 REDMINE_DB_DATABASE: redmine_db REDMINE_DB_USERNAME: redmine REDMINE_DB_PASSWORD: my_p@ssword REDMINE_SECRET_KEY_BASE: G75eddsecretkey # we will wait until db service is ready depends_on: - db db: # we use mysql server for redmine database image: mysql:8.0 restart: always volumes: # we also link the database storage with volume we created below - 'mysql_data:/var/lib/mysql' environment: # we create some env for mysql MYSQL_USER: redmine MYSQL_PASSWORD: my_p@ssword MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_ROOT_PASSWORD: JRFFHT534rth4u3!@# MYSQL_DATABASE: redmine_db volumes: # we create two volume used by redmine and our database mysql_data: driver: local redmine_data: driver: local
next, we create nginx configuration file, same folder as docker-compose file
nano nginx/nginx.conf
server { listen 80; server_name proman.withenri.tech; location / { proxy_pass http://henri_redmine_1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name proman.withenri.tech; ssl_certificate /etc/nginx/certs/withenri.tech_chained.crt; ssl_certificate_key /etc/nginx/certs/withenri.tech.key; location / { proxy_pass http://henri_redmine_1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
and create folder called certs then place our certificates right there.
Create container
let's run our docker compose file with command
docker-compose up -d
when we run this docker compose file, a network will created automatically and link three services (nginx, redmine, db) in those one network.
we can check our container with command :
docker ps -a
and then test redmine application on our browser with port 80 and port 443 with https connection. use user 'admin' and password 'admin' for login on our redmine application.
this article basically has same result when we installed on vps directly, refer to this article.
Hopefully this article helps you!
The above is the detailed content of Setup Redmine on Docker Container. For more information, please follow other related articles on the PHP Chinese website!

MySQLBLOBshavelimits:TINYBLOB(255bytes),BLOB(65,535bytes),MEDIUMBLOB(16,777,215bytes),andLONGBLOB(4,294,967,295bytes).TouseBLOBseffectively:1)ConsiderperformanceimpactsandstorelargeBLOBsexternally;2)Managebackupsandreplicationcarefully;3)Usepathsinst

The best tools and technologies for automating the creation of users in MySQL include: 1. MySQLWorkbench, suitable for small to medium-sized environments, easy to use but high resource consumption; 2. Ansible, suitable for multi-server environments, simple but steep learning curve; 3. Custom Python scripts, flexible but need to ensure script security; 4. Puppet and Chef, suitable for large-scale environments, complex but scalable. Scale, learning curve and integration needs should be considered when choosing.

Yes,youcansearchinsideaBLOBinMySQLusingspecifictechniques.1)ConverttheBLOBtoaUTF-8stringwithCONVERTfunctionandsearchusingLIKE.2)ForcompressedBLOBs,useUNCOMPRESSbeforeconversion.3)Considerperformanceimpactsanddataencoding.4)Forcomplexdata,externalproc

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,idealforconsistentlengthdatalikecountrycodes;2)VARCHARforvariable-lengthstrings,suitableforfieldslikenames;3)TEXTtypesforlargertext,goodforblogpostsbutcanimpactperformance;4)BINARYandVARB

TomasterMySQLBLOBs,followthesesteps:1)ChoosetheappropriateBLOBtype(TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB)basedondatasize.2)InsertdatausingLOAD_FILEforefficiency.3)Storefilereferencesinsteadoffilestoimproveperformance.4)UseDUMPFILEtoretrieveandsaveBLOBsco

BlobdatatypesinmysqlareusedforvoringLargebinarydatalikeImagesoraudio.1) Useblobtypes (tinyblobtolongblob) Basedondatasizeneeds. 2) Storeblobsin Perplate Petooptimize Performance.3) ConsidersxterNal Storage Forel Blob Romana DatabasesizerIndimprovebackupupe

ToadduserstoMySQLfromthecommandline,loginasroot,thenuseCREATEUSER'username'@'host'IDENTIFIEDBY'password';tocreateanewuser.GrantpermissionswithGRANTALLPRIVILEGESONdatabase.*TO'username'@'host';anduseFLUSHPRIVILEGES;toapplychanges.Alwaysusestrongpasswo

MySQLofferseightstringdatatypes:CHAR,VARCHAR,BINARY,VARBINARY,BLOB,TEXT,ENUM,andSET.1)CHARisfixed-length,idealforconsistentdatalikecountrycodes.2)VARCHARisvariable-length,efficientforvaryingdatalikenames.3)BINARYandVARBINARYstorebinarydata,similartoC


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

Dreamweaver CS6
Visual web development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.
