Deploy Tetua with docker
Tetua can be set up manually following the instructions in the getting started section. Docker is another option for installation.
There are things that will be guided in this section:
- Install Docker
- Deploy Portainer container
- Deploy Tetua container
- Deploy Nginx container
Install Docker
Follow these links for the detailed document on how to install Docker
and docker-compose
:
Deploy Portainer container
Create portainer docker-compose file:
mkdir -p /opt/containers/portainer/data
touch /opt/containers/docker-compose.yml
Update file /opt/containers/docker-compose.yml
with the following content:
version: '3'
services:
portainer:
image: portainer/portainer:latest
container_name: portainer
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/data
networks:
proxy:
external: true
Run the portainer container
cd /opt/containers/portainer
docker-compose up -d
Deploy Tetua container
Download and extract the Tetua binary:
mkdir -p /opt/containers/tetua
cd /opt/containers/tetua
wget https://github.com/ngocphuongnb/tetua/releases/download/v0.0.3-alpha/tetua_0.0.3-alpha_Linux_x86_64.tar.gz
tar -xvf tetua_0.0.3-alpha_Linux_x86_64.tar.gz
Create /opt/containers/Dockerfile
with this content;:
FROM ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -yq ca-certificates
RUN apt-get install tzdata -y
WORKDIR /tetua
COPY ./tetua /tetua/tetua
EXPOSE 3000
CMD ./tetua run
Create /opt/containers/docker-compose.yml
with this content:
version: '3'
services:
tetua:
container_name: tetua
image: tetua
restart: always
build:
context: .
dockerfile: ./Dockerfile
environment:
APP_ENV: production
volumes:
- ./config.json:/tetua/config.json
- ./public:/tetua/public
- ./private:/tetua/private
networks:
- proxy
networks:
proxy:
external: true
Create the Tetua config file:
./tetua init
./tetua setup -u admin -p password
Run the Tetua container
cd /opt/containers/tetua
docker-compose up -d
Deploy Nginx container
mkdir -p /opt/containers/nginx/conf.d
Create file /opt/containers/nginx/docker-compose.yml
with this content
version: '3'
services:
nginx:
container_name: nginx
image: nginx
restart: always
volumes:
- ./conf.d/portainer.nginx.conf:/etc/nginx/conf.d/portainer.nginx.conf
- ./conf.d/tetua.nginx.conf:/etc/nginx/conf.d/tetua.nginx.conf
ports:
- 80:80
command: /bin/sh -c "exec nginx -g 'daemon off;'"
networks:
- proxy
networks:
proxy:
external: true
Create file /opt/containers/nginx/conf.d/portainer.nginx.conf
with this content:
upstream app_portainer {
server portainer:9000;
}
server {
listen 80;
server_name portainer.mytetuaapp.local;
root /data;
access_log /var/log/nginx/nginx.portainer.log;
error_log /var/log/nginx/nginx.portainer.error.log;
location / {
index index.html index.htm;
try_files $uri @portainer;
}
location @portainer {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://app_portainer;
add_header X-Cache-Status $upstream_cache_status;
}
}
Create file /opt/containers/nginx/conf.d/tetua.nginx.conf
with this content:
upstream app_tetua {
server tetua:3000;
}
server {
listen 80;
server_name mytetuaapp.local;
access_log /var/log/nginx/nginx.tetua.log;
error_log /var/log/nginx/nginx.tetua.error.log;
location / {
index index.html index.htm;
try_files $uri @tetua;
}
location @tetua {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://app_tetua;
add_header X-Cache-Status $upstream_cache_status;
}
}
Run the Nginx container
cd /opt/containers/nginx
docker-compose up -d
You can now be able to access the Portainer dashboard to manage the server containers: https://portainer.mytetuaapp.local
And the Tetua app will be available at https://mytetuapp.local
Hi, can you write a documentation for compiling and deploying tetua without Docker?