First prototype of Dockerfile
parent
26b2745e9b
commit
63af040a38
|
@ -0,0 +1,2 @@
|
|||
data/
|
||||
.venv/
|
|
@ -1,2 +1,3 @@
|
|||
__pycache__/
|
||||
.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:
|
||||
@ rm -rf '$(VENV)'
|
||||
.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)
|
||||
|
||||
# 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:
|
||||
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