First prototype of Dockerfile
							parent
							
								
									26b2745e9b
								
							
						
					
					
						commit
						63af040a38
					
				| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					data/
 | 
				
			||||||
 | 
					.venv/
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
__pycache__/
 | 
					__pycache__/
 | 
				
			||||||
.venv/
 | 
					.venv/
 | 
				
			||||||
 | 
					data/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					FROM archlinux:latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.3/s6-overlay-amd64-installer /tmp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install the s6 overlay, nginx
 | 
				
			||||||
 | 
					RUN chmod +x /tmp/s6-overlay-amd64-installer && \
 | 
				
			||||||
 | 
					    /tmp/s6-overlay-amd64-installer / && \
 | 
				
			||||||
 | 
					    pacman \
 | 
				
			||||||
 | 
					        -Syu \
 | 
				
			||||||
 | 
					        --noconfirm \
 | 
				
			||||||
 | 
					        --needed \
 | 
				
			||||||
 | 
					        python python-pip nginx && \
 | 
				
			||||||
 | 
					    useradd -s /bin/false nginx && \
 | 
				
			||||||
 | 
					    mkdir /data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENV REPO_DIR=/data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install Python app
 | 
				
			||||||
 | 
					WORKDIR /usr/src/app
 | 
				
			||||||
 | 
					COPY requirements.txt app.py ./
 | 
				
			||||||
 | 
					RUN pip install -r requirements.txt && \
 | 
				
			||||||
 | 
					    pacman -Rs --noconfirm python-pip
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copy over s6 services files
 | 
				
			||||||
 | 
					COPY s6/services /etc/services.d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copy over nginx config file
 | 
				
			||||||
 | 
					COPY nginx.conf /etc/nginx/nginx.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The entrypoint is the init script for s6
 | 
				
			||||||
 | 
					ENTRYPOINT ["/init"]
 | 
				
			||||||
 | 
					CMD ["nginx"]
 | 
				
			||||||
							
								
								
									
										12
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										12
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -16,3 +16,15 @@ venv: $(VENV)/bin/activate
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	@ rm -rf '$(VENV)'
 | 
						@ rm -rf '$(VENV)'
 | 
				
			||||||
.PHONY: clean
 | 
					.PHONY: clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					run:
 | 
				
			||||||
 | 
						@ API_KEY=test REPO_DIR=data '$(VENV)/bin/flask' run
 | 
				
			||||||
 | 
					.PHONY: run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gunicorn:
 | 
				
			||||||
 | 
						@ API_KEY=test REPO_DIR=data '$(VENV)/bin/gunicorn' app:app
 | 
				
			||||||
 | 
					.PHONY: gunicorn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					image:
 | 
				
			||||||
 | 
						@ docker build -t chewingbever/arch-repo .
 | 
				
			||||||
 | 
					.PHONY: image
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								app.py
								
								
								
								
							
							
						
						
									
										2
									
								
								app.py
								
								
								
								
							| 
						 | 
					@ -57,7 +57,7 @@ def upload_file():
 | 
				
			||||||
    file.save(path)
 | 
					    file.save(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Run repo-add on the file
 | 
					    # Run repo-add on the file
 | 
				
			||||||
    res = subprocess.run(["repo-add", path.parent / "repo.db.tar.gz", path])
 | 
					    res = subprocess.run(["repo-add", path.parent.parent / "repo.db.tar.gz", path])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if res.returncode != 0:
 | 
					    if res.returncode != 0:
 | 
				
			||||||
        path.unlink()
 | 
					        path.unlink()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					user  nginx;
 | 
				
			||||||
 | 
					worker_processes  auto;
 | 
				
			||||||
 | 
					daemon off;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					error_log  /var/log/nginx/error.log notice;
 | 
				
			||||||
 | 
					pid        /var/run/nginx.pid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					events {
 | 
				
			||||||
 | 
					    worker_connections  1024;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					http {
 | 
				
			||||||
 | 
					    include       /etc/nginx/mime.types;
 | 
				
			||||||
 | 
					    default_type  application/octet-stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 | 
				
			||||||
 | 
					                      '$status $body_bytes_sent "$http_referer" '
 | 
				
			||||||
 | 
					                      '"$http_user_agent" "$http_x_forwarded_for"';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    access_log  /var/log/nginx/access.log  main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sendfile        on;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    keepalive_timeout  65;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    client_max_body_size 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    server {
 | 
				
			||||||
 | 
					        listen      80;
 | 
				
			||||||
 | 
					        listen [::]:80;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        location /api {
 | 
				
			||||||
 | 
					            proxy_pass http://localhost:8000/;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        location / {
 | 
				
			||||||
 | 
					            root   /data;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					#!/usr/bin/execlineb -S0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					s6-svscanctl -t /var/run/s6/services
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					#!/usr/bin/with-contenv sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec /usr/bin/gunicorn --chdir /usr/src/app app:app
 | 
				
			||||||
		Reference in New Issue