Skip to content

Commit 0b831b1

Browse files
committed
docker COPY from build
1 parent bb25961 commit 0b831b1

File tree

1 file changed

+31
-112
lines changed

1 file changed

+31
-112
lines changed

data/docker/build/index.md

Lines changed: 31 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
[docker-cheat-sheet](https://github.com/wsargent/docker-cheat-sheet#dockerfile)
22

33

4-
## Dockerfile
4+
## alpine
55
`nano Dockerfile`
66
```dockerfile
7-
FROM nginx:mainline-alpine3.17-slim
7+
FROM nginx:stable-alpine3.17-slim
8+
9+
RUN apk add bash
10+
11+
RUN adduser -S -s /bin/bash -u 1000 -D d_user
12+
13+
ENV MY_ENV="asim"
814

9-
COPY src /usr/share/nginx/html
15+
COPY --chown=d_user --chmod=550 . /d_new_dir
1016
```
1117

1218

13-
## alpine
19+
## nginx
1420
```dockerfile
15-
FROM nginx:stable-alpine3.17-slim
21+
FROM nginx:mainline-alpine3.17-slim
1622

1723
RUN apk add bash
1824

19-
COPY . /usr/share/nginx/html
25+
RUN adduser -S -s /bin/bash -u 1000 -D d_user
26+
27+
COPY --chown=d_user --chmod=550 ./src /usr/share/nginx/html
2028
```
2129

2230

@@ -28,9 +36,13 @@ Debian 10: `buster`
2836
```dockerfile
2937
FROM python:3.11-alpine3.18
3038

39+
RUN apk add bash
40+
41+
RUN adduser -S -s /bin/bash -u 1000 -D d_user
42+
3143
RUN pip install django gunicorn
3244

33-
COPY . /my_app
45+
COPY --chown=d_user --chmod=550 . /my_app
3446

3547
WORKDIR /my_app
3648

@@ -44,7 +56,7 @@ CMD [ "/my_app/manage.py" ]
4456
```dockerfile
4557
FROM python:3.11-slim-bullseye
4658

47-
RUN apt-get update && apt-get install -y gcc python3-dev libpq-dev
59+
RUN apt-get -y update && apt-get -y install gcc python3-dev libpq-dev
4860

4961
RUN adduser --system --shell /bin/bash --uid 1000 --group --disabled-password --disabled-login d_user
5062

@@ -72,128 +84,35 @@ CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
7284
```
7385

7486

75-
<!-- ======================================================================================== -->
76-
```dockerfile
77-
FROM debian:latest
78-
79-
LABEL multi.label1="value1" multi.label2="value2" other="value3"
80-
81-
ENV MY_ENV="asim"
82-
83-
COPY ./deployer.deb /
84-
COPY ./tests/ /tests/
85-
86-
87-
RUN apt-get -y update \
88-
&& apt-get -y install git dpkg curl sudo python3-venv lsb-release \
89-
&& git clone --depth 1 https://github.com/sstephenson/bats.git \
90-
&& /bats/install.sh /usr/local \
91-
&& dpkg --install /deployer.deb
92-
93-
94-
RUN groupadd -r myuser \
95-
&& useradd --no-log-init -r -g myuser -G sudo myuser \
96-
&& echo "myuser ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/myuser
97-
USER myuser
98-
99-
USER 1000
100-
101-
WORKDIR /path/to/workdir
102-
103-
ENTRYPOINT [ "/bin/sh", "-c" ]
104-
CMD [ "bats -t /tests " ]
105-
```
106-
107-
108-
## making php Dockerfile
109-
`nano ~/my_docker_file/Dockerfile`
87+
## COPY from build
11088
```dockerfile
111-
FROM busybox:latest
112-
FROM alpine:latest
113-
114-
FROM php:latest
115-
FROM python:latest
116-
FROM httpd:latest
117-
118-
FROM debian:latest
119-
FROM ubuntu:latest
89+
FROM ubuntu:22.04 AS build
12090

91+
RUN curl -L https://...
12192

122-
EXPOSE 80
123-
ENV MY_ENV="asim"
124-
125-
COPY ./my-php/ /var/www/html
126-
COPY ./my-bash.sh /
93+
RUN echo "9f99 file.tar.gz" | shasum -a 256 -c
12794

128-
RUN chmod +x /my-bash.sh
129-
RUN /my-bash.sh
130-
131-
# RUN >>> runs on build only.
132-
# CMD >>> only one CMD can be run after every startup.
133-
```
95+
RUN tar xzf ./file.tar.gz --directory /home/d_dir
13496

13597

136-
## making shell file
137-
`nano ~/my_docker_file/my-bash.sh`
138-
```bash
139-
echo "<br> RUN: $(date '+%x %X') - by $(whoami) - env: $(echo $MY_ENV)" >> /var/www/html/index.php
140-
```
141-
98+
FROM python:3.11-alpine3.18
14299

143-
## making php file
144-
`mkdir -p ~/my_docker_file/my-php/`
145-
`nano ~/my_docker_file/my-php/index.php`
146-
```html
147-
<?php echo 'from index.php <br>'; ?>
148-
<p>you will see this if you don't use volumes.</p>
149-
<p>volumes will override this file.</p>
100+
COPY --from=build --chown=d_user --chmod=500 /home/d_dir /home/d_python
150101
```
151102

152103

153-
## Build docker image
104+
## build - push
154105
```bash
155106
docker image build -t asim3/my_image:latest .
156107

157108

158-
sudo docker image build -t asim3/my_php_test:latest ~/my_docker_file/
159-
160-
sudo docker image build \
109+
docker image build \
161110
-t asim3/my_php_test:mytag \
162111
-t asim3/my_php_test:1.0 \
163112
-t asim3/my_php_test:latest \
164-
~/my_docker_file/
165-
166-
# OR
113+
./my_docker_file/
167114

168-
docker image build -t asim3/my_new_image:mytag .
169115

116+
docker login
170117
docker push asim3/my_new_image:mytag
171118
```
172-
173-
174-
## run
175-
```bash
176-
sudo docker container run -d -p 80:80 asim3/my_php_test:mytag
177-
178-
# with volumes
179-
sudo docker container run -d -p 80:80 \
180-
-v ~/my_docker_file/my-php/:/var/www/html/ asim3/my_php_test:mytag
181-
```
182-
183-
184-
## Push Image
185-
Push Image to Docker Hub
186-
> the image name must start with "docker hub username"
187-
```bash
188-
sudo docker login
189-
190-
sudo docker push asim3/my_php_test:mytag
191-
```
192-
193-
194-
## Build then Push
195-
```bash
196-
docker image build -t asim3/my_new_image:latest .
197-
198-
docker push asim3/my_new_image:latest
199-
```

0 commit comments

Comments
 (0)