Feature: Add Pynecone Container Image Build (#387)
This commit is contained in:
parent
3f5ff53c88
commit
7fefbcd444
49
docker-example/Dockerfile
Normal file
49
docker-example/Dockerfile
Normal 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
33
docker-example/README.md
Normal 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
|
||||
```
|
1
docker-example/requirements.txt
Normal file
1
docker-example/requirements.txt
Normal file
@ -0,0 +1 @@
|
||||
pynecone-io
|
Loading…
Reference in New Issue
Block a user