Feature: Add Pynecone Container Image Build (#387)

This commit is contained in:
Robert Neumann 2023-01-30 06:38:27 +01:00 committed by GitHub
parent 3f5ff53c88
commit 7fefbcd444
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 83 additions and 0 deletions

49
docker-example/Dockerfile Normal file
View File

@ -0,0 +1,49 @@
FROM python:3.11-slim as base
RUN adduser --disabled-password pynecone
FROM base as build
WORKDIR /app
ENV VIRTUAL_ENV=/app/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY . .
RUN pip install wheel \
&& pip install -r requirements.txt
FROM base as runtime
RUN apt-get update && apt-get install -y \
curl \
&& curl -fsSL https://deb.nodesource.com/setup_19.x | bash - \
&& apt-get update && apt-get install -y \
nodejs \
unzip \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="/app/venv/bin:$PATH"
FROM runtime as init
WORKDIR /app
ENV BUN_INSTALL="/app/.bun"
COPY --from=build /app/ /app/
RUN pc init
FROM runtime
COPY --chown=pynecone --from=init /app/ /app/
USER pynecone
WORKDIR /app
CMD ["pc","run" , "--env", "prod"]
EXPOSE 3000
EXPOSE 8000

33
docker-example/README.md Normal file
View File

@ -0,0 +1,33 @@
# Pynecone Container Image Build
This example describes how to create and use a container image for Pynecone with your own code.
## Update Requirements
The `requirements.txt` includes the pynecone-io package which is need to install Pynecone framework. If you use additional packages in your project you have add this in the `requirements.txt` first. Copy the `Dockerfile` and the `requirements.txt` file in your project folder.
## Customize Pynecone Config
The `pcconfig.py` includes the configuration of your Pynecone service. Edit the file like the following configuration. If you want to use a custom database you can set the endpoint in this file.
```python
import pynecone as pc
config = pc.Config(
app_name="app",
api_url="0.0.0.0:8000",
bun_path="/app/.bun/bin/bun",
db_url="sqlite:///pynecone.db",
)
```
## Build Pyonecone Container Image
To build your container image run the following command:
```bash
docker build -t pynecone-project:latest .
```
## Start Container Service
Finally, you can start your Pynecone container service as follows:
```bash
docker run -d -p 3000:3000 -p 8000:8000 --name pynecone pynecone:latest
```

View File

@ -0,0 +1 @@
pynecone-io